沒有關注JUnit源代碼本身(我的下一步)是否有一種簡單的方法來設置每個測試都使用的默認Runner,而無需在每次測試中設置@RunWith?我們有大量的單元測試,我希望能夠在整個板子上添加一些支持,而不必更改每個文件。全局設置JUnit運行器而不是@RunWith
理想情況下,我希望像這樣的東西:-Djunit.runner =「com.example.foo」。
沒有關注JUnit源代碼本身(我的下一步)是否有一種簡單的方法來設置每個測試都使用的默認Runner,而無需在每次測試中設置@RunWith?我們有大量的單元測試,我希望能夠在整個板子上添加一些支持,而不必更改每個文件。全局設置JUnit運行器而不是@RunWith
理想情況下,我希望像這樣的東西:-Djunit.runner =「com.example.foo」。
我不認爲這是可以全局定義的,但是如果你寫自己的主函數是一個選項,你可以通過代碼做類似的事情。您可以創建一個自定義的RunnerBuilder
並將它與您的測試類一起傳遞給Suite
。
Class<?>[] testClasses = { TestFoo.class, TestBar.class, ... };
RunnerBuilder runnerBuilder = new RunnerBuilder() {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
return new MyCustomRunner(testClass);
}
};
new JUnitCore().run(new Suite(runnerBuilder, testClasses));
這不會與Eclipse中的UI測試運行器集成,但對於某些自動化測試場景,它可能是一個選項。
JUnit不支持全局設置運行程序。您可以將@RunWith隱藏在基類中,但這可能無助於您的情況。
根據您想要實現的目標,您可以使用自定義RunListener
來全局影響測試行爲。下面是如何使用Maven Surefire插件對其進行配置:http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters
因此,我偷看了RunWith註釋處理的代碼,並沒有看到任何將它從其他地方拉出默認運行器的地方。 – 2011-05-05 13:29:51