动态加载 class 后向 junit 测试套件添加拆卸方法
Adding tear down method to junit test suite after loading class dynamically
我将所有测试动态加载到这样的测试套件中:
@RunWith(AllTests.class)
public final class MyTestSuite {
public static TestSuite suite() {
TestSuite suite = new TestSuite();
for (Test test : findAllTestCasesRuntime()) { // returns a list of JUnit4TestAdapter(Class.forName(fileName))
suite.addTest(test);
}
return suite;
}
}
我想为所有测试添加一个@after 方法到 运行 的测试套件。今天每个测试都有这个方法做完全相同的事情。我尝试子类化测试套件并添加一个 @after 方法但没有成功。
这是我找到的解决方案:
我创建了一个基础测试 class:
@Ignore
public class MyTestBase {
@After
public void runsAfterEveryTestFromBaseClass() {
//code
}
}
我的实际测试 class 现在扩展了这个 class 所以问题中的代码现在看起来像这样:
@RunWith(AllTests.class)
public final class MyTestSuite extends MyTestBase{
public static TestSuite suite() {
TestSuite suite = new TestSuite();
for (Test test : findAllTestCasesRuntime()) { // returns a list of JUnit4TestAdapter(Class.forName(fileName))
suite.addTest(test);
}
return suite;
}
}
现在 runsAfterEveryTestFromBaseClass 方法中的代码在每次测试后运行。
我将所有测试动态加载到这样的测试套件中:
@RunWith(AllTests.class)
public final class MyTestSuite {
public static TestSuite suite() {
TestSuite suite = new TestSuite();
for (Test test : findAllTestCasesRuntime()) { // returns a list of JUnit4TestAdapter(Class.forName(fileName))
suite.addTest(test);
}
return suite;
}
}
我想为所有测试添加一个@after 方法到 运行 的测试套件。今天每个测试都有这个方法做完全相同的事情。我尝试子类化测试套件并添加一个 @after 方法但没有成功。
这是我找到的解决方案: 我创建了一个基础测试 class:
@Ignore
public class MyTestBase {
@After
public void runsAfterEveryTestFromBaseClass() {
//code
}
}
我的实际测试 class 现在扩展了这个 class 所以问题中的代码现在看起来像这样:
@RunWith(AllTests.class)
public final class MyTestSuite extends MyTestBase{
public static TestSuite suite() {
TestSuite suite = new TestSuite();
for (Test test : findAllTestCasesRuntime()) { // returns a list of JUnit4TestAdapter(Class.forName(fileName))
suite.addTest(test);
}
return suite;
}
}
现在 runsAfterEveryTestFromBaseClass 方法中的代码在每次测试后运行。