2

我已经@BeforeClass为测试套件运行了设置,如下所示:

@RunWith(Categories.class)
@IncludeCategory(IntegrationTest.class)
.
.
.
public class IntegrationTestSuite {
    @BeforeClass
    public static void initialise() throws Exception {
        // Integration test-specific config.
    }
}

当我在套件中运行所有测试时,这很有效。但是,当我运行单个测试时,显然这些东西不会被执行。有没有更优雅的方法可以让我在测试用例级别重用测试类别设置?

4

2 回答 2

1

考虑创建一个只执行一次初始化的自定义规则(可能使用ExternalResourse )。使用一个测试为其他测试初始化​​的机制是一种反模式。它太脆弱了,因为它取决于测试运行的顺序,并且在只运行一个测试时也会失败。我认为该@Rule机制是一个更好的解决方案。

于 2012-10-08T11:09:03.003 回答
0

我建议使用全局标志作为静态上下文或在属性文件中:

public static boolean runTestCaseStandAlone = false;

或者

boolean runTestCaseStandAlone = properties.get("run.test.case.alone");

将测试套件方法更新为:

public class IntegrationTestSuite {
 @BeforeClass
 public static void initialise() throws Exception {
   if(!GLOBALCONTEXT.runTestCaseStandAlone){
       // Integration test-specific config.
   }
  }
 }

为您的测试用例创建一个基类,例如

public class BaseTest ....
 @BeforeClass
 public static void initialise() throws Exception {
   if(GLOBALCONTEXT.runTestCaseStandAlone){
       // Integration test-specific config.
   }
  }

确保您所有的个人测试用例都扩展了上述基类。

于 2012-10-08T01:58:45.627 回答