В настоящее время я выполняю минимальное покрытие JUnit на уровне модуля. Поэтому, если общий охват линии ниже определенного значения (80% в моем случае), то сборка не выполняется. Для этого я использовал maven-surefire-plugin с maven-enforcer-plugin, JUnit и JMockit. Файл pom частично выглядит следующим образом.Обеспечить минимальное общее покрытие JUnit по уровню класса?
<build>
<plugins>
....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit4</artifactId>
<version>2.18.1</version>
</dependency>
</dependencies>
<configuration>
<systemPropertyVariables>
<coverage-outputDir>${basedir}/target/coverageReport</coverage-outputDir>
<coverage-output>html,merge</coverage-output>
<coverage-check>80</coverage-check>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>coverage.check</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>test</phase>
<configuration>
<rules>
<requireFilesDontExist>
<files>
<file>coverage.check.failed</file>
</files>
</requireFilesDontExist>
</rules>
</configuration>
</execution>
</executions>
</plugin>
....
</build>
<dependencies>
....
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>org.jmockit</groupId>
<artifactId>jmockit-coverage</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
....
</dependencies>
Моя проблема заключается в том, что некоторые классы могут быть очень ниже 80% покрытия и сборки до сих пор проходят, пока общий охват не менее 80%.
Итак, можно ли каким-либо образом обеспечить соблюдение моего охвата на уровне класса?
+1 Я действительно ценю эту идею. И полностью согласен с тобой. На самом деле я бы взял эту Идею в качестве ответа. Но бывают случаи, когда принуждение является единственным вариантом. Поэтому я собираюсь с более техническим решением. Но действительно хорошее объяснение и ответ. – mavi
Добро пожаловать. Желаю вам удачи; надеюсь, приходит тот, кто может дать вам этот «настоящий технический» ответ, который вы ищете ;-) – GhostCat