在JUnit4下,我有一个测试套件,它使用@classrule
注释来引导框架。这需要能够在测试期间构造某些对象。它还将一些任意应用程序属性加载到静态中。这些通常特定于当前的测试套件,并将在整个套件中进行大量测试。我的测试套件看起来像这样(FrameworkResource扩展ExternalResource并进行大量的bootstrap工作):
@RunWith(Suite.class)
@SuiteClasses({com.example.test.MyTestCase.class})
public class MyTestSuite extends BaseTestSuite {
@ClassRule
public static FrameworkResource resource = new FrameworkResource();
@BeforeClass
public static void setup(){
loadProperties("props/suite.properties")
}
}
以上工作非常好,主构建在执行所有测试套件及其各自的测试用例(SuiteClasses
?)时没有问题。问题是当我在eclipse中时,我想单独运行一个测试用例而不必运行整个套件(作为本地开发过程的一部分)。我会右键单击java文件Run As> JUnit Test和任何需要框架资源或测试属性的测试都会失败。
我的问题是:
@dependsOn(MyTestSuite.class)
吗?答案 0 :(得分:1)
当您只运行一个测试类时,一个好的解决方案是将初始化代码移动到测试类。您需要添加@Before批注来初始化属性。
这将要求您复制所有测试类的代码。为了解决这个问题,您可以创建一个具有@Before方法的抽象父类,以便所有子类具有相同的初始化。
此外,初始化数据可以是静态变量,用于检查是否已为该特定执行初始化。