我稍微做了一個post about this。
這可以使用JUnit 4和Ant。訣竅是將方法名稱[s]作爲命令行中的屬性傳遞,如果該屬性已通過,則使用不同的任務。
鑑於這種測試類:
import org.junit.Test;
public class FooTests {
@Test
public void firstTest() {
System.out.println("test 1");
}
@Test
public void secondTest() {
System.out.println("test 2");
}
@Test
public void thirdTest() {
System.out.println("test 3");
}
}
創建此Ant文件:
<project default="test">
<!-- Tell Ant where to find JUnit -->
<path id="classpath.test">
<pathelement location="junit-4.11.jar" />
<pathelement location="hamcrest-core-1.3.jar" />
<pathelement location="." /> <!-- or where ever your test class file is -->
</path>
<target name="test" description="Runs the tests">
<!-- Set a new Ant property "use-methods" to true if the "test-methods" Ant property - which we'll pass in from the command line - exists and is not blank.-->
<condition property="use-methods" else="false">
<and>
<isset property="test-methods"/>
<not>
<equals arg1="${test-methods}" arg2=""/>
</not>
</and>
</condition>
<!-- Sanity check -->
<echo message="use-methods = ${use-methods}"/>
<echo message="test-methods = ${test-methods}"/>
<!-- Run the tests -->
<junit>
<classpath refid="classpath.test" />
<formatter type="brief" usefile="false" />
<!-- The "if" tells JUnit to only run the test task if the use-methods property is true.-->
<test if="${use-methods}" name="FooTests" methods="${test-methods}"/>
<!-- The "unless" tells JUnit to not run the test task if the use-methods property is true.-->
<test unless="${use-methods}" name="FooTests"/>
</junit>
</target>
</project>
例子
運行所有測試。
$ ant
Buildfile: build.xml
test:
[echo] use-methods = false
[echo] test-methods = ${test-methods}
[junit] Testsuite: FooTests
[junit] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec
[junit]
[junit] ------------- Standard Output ---------------
[junit] test 3
[junit] test 1
[junit] test 2
[junit] ------------- ---------------- ---------------
BUILD SUCCESSFUL
Total time: 0 seconds
通過在命令行上指定「test-methods」Ant屬性,只運行第二個測試。
$ ant -Dtest-methods=secondTest
Buildfile: build.xml
test:
[echo] use-methods = true
[echo] test-methods = secondTest
[junit] Testsuite: FooTests
[junit] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec
[junit]
[junit] ------------- Standard Output ---------------
[junit] test 2
[junit] ------------- ---------------- ---------------
BUILD SUCCESSFUL
Total time: 0 seconds
只運行第二次和第三次測試。
$ ant -Dtest-methods=secondTest,thirdTest
Buildfile: build.xml
test:
[echo] use-methods = true
[echo] test-methods = secondTest,thirdTest
[junit] Testsuite: FooTests
[junit] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.01 sec
[junit]
[junit] ------------- Standard Output ---------------
[junit] test 3
[junit] test 2
[junit] ------------- ---------------- ---------------
BUILD SUCCESSFUL
Total time: 0 seconds
謝謝,即使eclipse選項似乎運行的所有類的測試它仍然幫助我。 – forste 2012-03-11 13:22:31
然而,應用程序日誌不會被記錄到Eclipse控制檯,你知道如何指揮它呢? – forste 2012-03-11 13:23:35
顯然日誌級別以某種方式設置爲INFO,因此我遇到類似http://stackoverflow.com/questions/3501355/log4j-output-not-displayed-in-eclipse-console – forste 2012-03-11 13:34:49