Tag: surefire

Surefire并没有selectJunit 4testing

出于某种原因,我无法获得Maven 2 Surefire插件来执行JUnit 4testing课程。 public class SimpleTest { @org.junit.Test public void simple() { System.out.println("foo"); } } 不过如果我把这个类改成JUnit-3之类的,比如 public class SimpleTest extends junit.framework.TestCase { public void testBar() { System.out.println("bar"); } @org.junit.Test public void simple() { System.out.println("foo"); } } 然后它被执行。 以下是我所做的: 已validationMaven版本:Apache Maven 2.2.1(r801777; 2009-08-06 20:16:01 + 0100) 经过validation的Surefire版本:遵循这个build议 经过validation的Surefire版本:在我的~/.m2/repository/org/apache/maven/surefire检查了Surefire jar,它们都是版本2.4.2或2.4.3 做了一个mvn dependency:tree | grep junit mvn […]

当Mavenunit testing失败时,如何让Jenkins构build失败?

我正在使用Jenkins,Maven 3.1和Java 1.6。 我有以下的目标和选项在jenkins设立的以下Maven工作… clean install -U -P cloudbees -P qa 下面是我的pom.xml surefireconfiguration… <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.17</version> <configuration> <reuseForks>true</reuseForks> <argLine>-Xmx2048m -XX:MaxPermSize=512M </argLine> <skipTests>false</skipTests> </configuration> </plugin> 但是,当我的unit testing失败时,Jenkins控制台输出仍然表示“BUILD SUCCESS”,并且构build标记为“unstable”而不是彻底失败。 如何在Jenkins中configuration(或Maven,如果它的结果​​是什么),这样如果任何unit testing失败,我的构build失败(不会变得不稳定或通过)? 以下是控制台输出的内容 17:08:04 MyProjectOrganizationControllerTest.testRecoverFromError » IllegalState Failed to… 17:08:04 MyProjectOrganizationControllerTest.testVerifyDistrictListPopulated » IllegalState 17:08:04 MyProjectOrganizationControllerTest.testUpdateSchool » IllegalState Failed to loa… 17:08:04 MyProjectOrganizationControllerTest.testDeleteSchool » IllegalState Failed to loa… […]

使用Hamcrest 1.3和JUnit 4.11的NoSuchMethodError

另一个JUnit&Hamcrest组合的NoSuchMethodError实例。 出错代码: assertThat(dirReader.document(0).getFields(), hasItem( new FeatureMatcher<IndexableField, String>(equalTo("Patisnummer"), "Field key", "Field key") { @Override protected String featureValueOf(IndexableField actual) { return actual.name(); } } )); IndexerTest.java中的注释行152-157(commit ac72ce ) 导致NoSuchMethodError(请参阅http://db.tt/qkkkTE78获取完整的输出): java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V at org.hamcrest.FeatureMatcher.matchesSafely(FeatureMatcher.java:43) at org.hamcrest.TypeSafeDiagnosingMatcher.matches(TypeSafeDiagnosingMatcher.java:55) at org.hamcrest.core.IsCollectionContaining.matchesSafely(IsCollectionContaining.java:25) at org.hamcrest.core.IsCollectionContaining.matchesSafely(IsCollectionContaining.java:14) at org.hamcrest.TypeSafeDiagnosingMatcher.matches(TypeSafeDiagnosingMatcher.java:55) at org.junit.Assert.assertThat(Assert.java:770) at org.junit.Assert.assertThat(Assert.java:736) at indexer.IndexerTest.testIndexContainsField(IndexerTest.java:152) 设置: JUnit 4.11 Hamcrest 1.3 使用Maven的surefire插件(版本2.14),它使用了JUnitCoreProvider Java 7(OpenJDK) 看到pom (commit […]

Maven 2.1.0不会将系统属性传递给Java虚拟机

我们使用命令行将系统属性传递给Java虚拟机,当运行我们的Hudson在Linux机器上构build时。 它曾经在2.0.9中工作得很好,因为我们升级到2.1.0就完全停止了工作。 系统属性从来没有把它交给Java虚拟机。 我创build了一个小testing项目,实际上它根本不起作用。 这应该适用于Maven 2.0.9: mvn2.0.9 -Dsystem.test.property=test test 但是这将失败: mvn2.1 -Dsystem.test.property=test test Java代码简单地做到这一点 assertTrue( System.getProperty("system.test.property") != null);

如何获得testing资源文件?

在unit testing中,我需要导入一个csv文件。 这位于资源文件夹,即src / test / resources

在maven中不能使用jacoco JVM参数和surefire JVM参数

我正在使用jacoco插件的maven生成代码覆盖率度量。 我在使用jacoco插件所需的java选项configurationsurefire插件时遇到一些困难。 我已经看到了堆栈溢出已经有一些答案,但有些不适合我。 我有一个多模块项目,我的一个模块configurationsurefire插件如下: foo/pom.xml : <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>-XX:MaxPermSize=512m</argLine> </configuration> </plugin> </plugins> 这按预期工作。 现在我想包含jacoco来获取代码覆盖度量,所以我添加了一个CodeCoverageconfiguration文件来处理所有的jacococonfiguration: parent/pom.xml : <profile> <id>CodeCoverage</id> <build> <pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> <id>jacoco-initialize</id> <goals><goal>prepare-agent</goal></goals> <configuration> <propertyName>surefire.argLine</propertyName> </configuration> … </execution> <executions> </plugin> </plugins> </pluginManagement> </build> </profile> 在这里可以看到,如果指定了CodeCoverageconfiguration文件,那么将jacoco插件configuration为使用surefire.argLine属性,并且该属性用于configurationargLine插件的argLine 。 然后,我更新了foo模块的pom.xml文件,以使用由jacoco插件生成的surefire.argLine属性: foo/pom.xml : <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>${surefire.argLine} -XX:MaxPermSize=512m</argLine> </configuration> […]

TypeNotPresentExceptionProxy

从Surefire 2.6升级到Surefire 2.13时,在运行我的unit testing时,我得到一个TypeNotPresentExceptionProxy 。 java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:653) at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:460) at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286) at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222) at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69) at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52) at java.lang.Class.initAnnotationsIfNecessary(Class.java:3070) at java.lang.Class.getAnnotation(Class.java:3029) at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.isValidJUnit4Test(JUnit4TestChecker.java:64) 在JUnit4TestChecker ,第64行看起来像这样: Annotation runWithAnnotation = testClass.getAnnotation( runWith ); 所以Surefire会检查@RunWith注解来确保它的types是有效的。 我们的testing使用Spring,因此@RunWith在我们的testing类中看起来像这样: @RunWith(SpringJUnit4ClassRunner.class) 似乎Surefire没有findSpringJUnit4ClassRunner类。 我不确定为什么在Surefire 2.6下,testing运行良好。 有任何想法吗?

使控制台中的Maven的确定显示堆栈跟踪

我想在控制台中看到unit testing的堆栈跟踪。 确实支持这个吗?

Eclipse中的JUnittesting通过,但在Maven Surefire中失败

我已经使用JUnit 4和spring-test库编写了一些JUnittesting。 当我在Eclipse中运行testing,然后运行正常,并通过。 但是,当我使用Maven(在构build过程中)运行它们时,它们失败,从而导致与弹簧相关的错误。 我不确定是什么导致了这个问题,JUnit,Surefire或Spring。 这里是我的testing代码,弹簧configuration和我从Maven得到的exception: PersonServiceTest.java package com.xyz.person.test; import static com.xyz.person.util.FjUtil.toFjList; import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.transaction.annotation.Transactional; import com.xyz.person.bo.Person; import com.xyz.person.bs.PersonService; import fj.Effect; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath*:personservice-test.xml" }) @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) public […]

我如何让我的Maven集成testing运行

我有一个maven2多模块项目,并在我的每个子模块中,我有Test.javatesting和集成testing命名为Test.java和Integration.java JUnittesting。 当我执行时: mvn test 子模块内的所有JUnittesting*Test.java被执行。 当我执行 mvn test -Dtest=**/*Integration 没有一个Integration.javatesting在子模块中得到执行。 这些对我来说似乎是完全一样的命令,但是带有-Dtest = / * Integration **的那个不起作用,它显示了在父级别运行的0个testing,没有任何testing