【问题标题】:Adding tear down method to junit test suite after loading class dynamically动态加载类后向junit测试套件添加拆卸方法
【发布时间】:2015-11-11 02:12:09
【问题描述】:

我将所有测试动态加载到这样的测试套件中:

@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 方法,但没有运气。

【问题讨论】:

  • 您在寻找@AfterClass吗?
  • @PeterLawrey 我在扩展 TestSuite 类时尝试了不同的注释,但没有一个被执行。我不知道我应该把我想运行的方法放在更多的地方。
  • 您将@AfterClass 方法与您的测试放在同一个类中。
  • @PeterLawrey 我不希望这样,因为它在所有类中都是完全相同的代码。请看下面我的回答。感谢您的回复。

标签: java junit runtime test-suite


【解决方案1】:

这是我找到的解决方案: 我创建了一个基础测试类:

@Ignore
public class MyTestBase {
    @After
    public void runsAfterEveryTestFromBaseClass() {
        //code
    }   
}

我的实际测试类现在扩展了这个类,所以问题中的代码现在看起来像这样:

@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 方法中的代码在每次测试后运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多