icy*_*old 5 java junit design-patterns junit4
在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")
}
}
Run Code Online (Sandbox Code Playgroud)
以上工作非常好,主要构建执行所有测试套件及其各自的测试用例(SuiteClasses?)没有问题.问题是当我在eclipse中时,我想单独运行一个测试用例,而不必运行整个套件(作为本地开发过程的一部分).我会右键单击java文件Run As> JUnit Test,任何需要框架资源或测试属性的测试都会失败.
我的问题是:
@dependsOn(MyTestSuite.class)吗?由于您只运行一个测试类,因此一个好的解决方案是将初始化代码移至测试类。您需要添加 @Before 注释来初始化属性。
这需要您在所有测试类上复制代码。为了解决这个问题,您可以创建一个具有 @Before 方法的抽象父类,以便所有子类都具有相同的初始化。
此外,初始化的数据可以位于静态变量上,用于检查它是否已经针对该特定执行进行了初始化。
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |