All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mockit.coverage.testRedundancy.TestCoverage Maven / Gradle / Ivy

Go to download

JMockit is a Java toolkit for automated developer testing. It contains APIs for the creation of the objects to be tested, for mocking dependencies, and for faking external APIs; JUnit (4 & 5) and TestNG test runners are supported. It also contains an advanced code coverage tool.

There is a newer version: 1.49
Show newest version
/*
 * Copyright (c) 2006 Rogério Liesenfeld
 * This file is subject to the terms of the MIT license (see LICENSE.txt).
 */
package mockit.coverage.testRedundancy;

import java.lang.reflect.*;
import java.util.*;
import java.util.Map.*;
import javax.annotation.*;

public final class TestCoverage
{
   @Nonnull public static final TestCoverage INSTANCE = new TestCoverage();

   @Nonnull private final Map testsToItemsCovered = new LinkedHashMap();
   @Nullable private Method currentTestMethod;

   private TestCoverage() {}

   public void setCurrentTestMethod(@Nullable Method testMethod)
   {
      if (testMethod != null) {
         testsToItemsCovered.put(testMethod, 0);
      }

      currentTestMethod = testMethod;
   }

   public void recordNewItemCoveredByTestIfApplicable(int previousExecutionCount)
   {
      if (previousExecutionCount == 0 && currentTestMethod != null) {
         Integer itemsCoveredByTest = testsToItemsCovered.get(currentTestMethod);
         testsToItemsCovered.put(currentTestMethod, itemsCoveredByTest == null ? 1 : itemsCoveredByTest + 1);
      }
   }

   @Nonnull
   public List getRedundantTests()
   {
      List redundantTests = new ArrayList();

      for (Entry testAndItemsCovered : testsToItemsCovered.entrySet()) {
         Method testMethod = testAndItemsCovered.getKey();
         Integer itemsCovered = testAndItemsCovered.getValue();

         if (itemsCovered == 0) {
            redundantTests.add(testMethod);
         }
      }

      return redundantTests;
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy