当我在Eclipse中运行测试时,以及通过maven surefire插入mvn clean install
从终端执行的测试时,我在Junit测试之间存在差异
在一个项目中,当我右键单击src/test/java
Eclipse时,Junit告诉我有137个测试正在运行。这样做mvn clean install
只给了我119。在这一项上,似乎测试名称中的大小写可能是一种可能的解释,有些测试不是以小写字母开头的,这使surefire忽略了它们,但是还有其他可能的解释吗?
在第二个项目中,我还有一个更烦人的问题:整个测试包都不由运行mvn clean install
。我在下面有2个软件包src/test/java
:com.project
和com.project.services
。下的测试类com.project
通过surefire正确运行,而不是下的测试类com.project.services
。
我能看到的唯一特性是下面的类com.project.services
具有多个继承级别:
public class ActualTestsCasesA extends GenericTestSituationA {}
public class GenericTestSituationA extends ServicesAbstractTests {}
public abstract ServicesAbstractTests extends ProjectAbstractTests {}
ActualTestsCasesA
,GenericTestSituationA
并且ServicesAbstractTests
都在com.project.services
测试包中。ProjectAbstractTests保留在另一个Maven项目中。
这是我pom.wml中对surefire插件的依赖关系:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<forkMode>always</forkMode>
<encoding>${project.build.sourceEncoding}</encoding>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
</configuration>
</plugin>
您已经发现,Surefire在运行测试时具有特定的命名约定。但是,您可以配置其他naminig约定以匹配您自己项目的测试文件名。这对于可能未遵循Maven标准的旧式测试或不愿重构的大量测试类很有用。
请查看Surefire文档以获取详细信息:http : //maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
在您的情况下,您可以将Surefire配置为包括带有其他模式的测试类,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<forkMode>always</forkMode>
<encoding>${project.build.sourceEncoding}</encoding>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<includes>
<include>**/*Tests*.*</include>
<include>**/*TestSituation*.*</include>
</includes>
</configuration>
</plugin>
但是,Eclipse不受此类限制的约束。相反,它依靠junit4库的存在来运行测试,并允许jUnit自身确定某个类是否被视为可运行的测试。有关更多信息,请参阅Eclipse Mars文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句