如何在Eclipse中使用maven-surefire-plugin与TestNG一起工作

时间:2011-06-03 23:52:52

标签: java maven testng maven-surefire-plugin

我不能让这两个人在eclipse中一起工作

我可以像这样设置surefire插件

<suiteXmlFiles>
        <suiteXmlFile>${basedir}/src/test/resources/testng.xml</suiteXmlFile>
    </suiteXmlFiles>
    <testResources>
        <testResource>
            <directory>${project.basedir}/src/test/java</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
        </testResource>
        <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </testResource>
    </testResources>

并运行$mvn test并编译所有资源并将其移至/target/test-classes,这样可以正常工作。

但是如果我运行$mvn clean然后使用TestNG视图来运行一些测试,那么/target/test-classes中没有编译任何内容,所以我要么必须在此之前运行测试阶段,要么以某种方式使用{ {1}}编译测试资源的目标...

maven-compiler-plugin:testCompile未通过maven-compiler-plugin:2.3.2:testCompile配置设置为surefire插件。它只是将测试源代码编译成测试类

我应该怎么做才能让testNG像我运行surefire插件一样执行?我不知何故需要testResources

产生的效果

1 个答案:

答案 0 :(得分:1)

testResources & resourcesmaven-resources-plugin

的一部分

compile & test-compilemaven-compiler-plugin

的一部分

所以你要做的就是点击一个调用所有这些阶段的按钮。通过TestNG视图运行测试之前的目标

compile 
test-compile
maven-resources-plugin:resources 
maven-resources-plugin:testResources 

此外,这非常重要,每当您从TestNG视图运行测试时,eclipse会创建一个临时的testng.xml定义,其中包含您单击的测试,无论是测试还是类测试。因此,如果您通过Eclipse的Run As使用testNG运行配置,那么在通过SureFire插件运行时在testng.xml中的其他设置会丢失...它看起来像这样

/tmp/testng-eclipse-388280625/testng-customsuite.xml

-

<suite name="Default suite">
  <test verbose="2" name="Default test">
    <classes>
      <class name="com.example.tests.selenium.SubmitUploadFormTest"/>
    </classes>
  </test>
</suite>

它有一个方便的方法来解决这个问题 - 在eclipse testng首选项中设置模板testng.xml文件。