我想爲我們公司的一些常見使用案例(例如Google Guave針對集合)創建測試套件生成器。針對TestSuites的未通過測試的測試
所以我創建了我的構建器,以及一些擴展TestSuite
或TestCase
的類,如果需要,它們會被添加。但是運行在Eclipse中的一切(火星4.5.1 - 不判斷)顯示測試爲「無根試驗」,並認爲不能將它們標記爲成功要麼失敗也不:
帶來的Maven以下例外(但它是Maven,我可以刻錄該橋,但我不相信它與上面有任何關係):
[錯誤]未能執行目標org.apache .maven.plugins:maven-surefire-plugin:2.18.1:項目org.acme.project上的測試(默認測試)目標org.apache.maven.plugins的執行默認測試:maven-surefire-plugin:2.18。 1:測試輝導致:有在叉形過程中出現錯誤
Other questions狀態,這是由於使用JUnit 4 JUnit的3類TestCase
(未棄用,因此...),在這種情況下的問題是:如何將此代碼轉換爲JUnit 4?
@RunWith(Suite.class)
@Suite.SuiteClasses({ MyTest.Suite.class })
public class MyTest {
public static class Suite {
public static TestSuite suite() {
final TestSuite suite = new TestSuite("My Test Suite");
suite.addTest(new CompoundTester(value -> new MyTester(value), "A", "B"));
return suite;
}
}
public static class CompoundTester extends TestSuite {
public CompoundTester(final Function<String, TestCase> testFactory, final String... values) {
String name = "unknown";
for (final String value : values) {
final TestCase testCase = testFactory.apply(value);
name = testCase.getName();
addTest(new TestCase(value.toString()) {
@Override
public void run(final TestResult result) {
testCase.run(result);
}
});
}
setName(name);
}
}
public static class MyTester extends TestCase {
private final String object;
public MyTester(final String object) {
super("testSomething");
this.object = object;
}
public void testSomething() {
Assert.assertNotNull(this.object);
}
}
}