我们有多个测试用例将数据加载到缓存中并运行测试用例,.the测试用例运行得很好,但是当我们运行所有测试用例一次时,会花费很多时间,因为每次为每个测试case.Is加载缓存时,有任何方法可以加载缓存一次,然后在所有测试用例中使用缓存。
这样做的一种方法是将所有的测试用例放在一个类中,但这违背了目的,因为结果将很难分析(每个类中大约有5-10个测试方法,大约有30个测试类,所以生成的报告将非常大,并且没有组织)。我尝试使用测试套件,但缓存在每个测试用例之后被关闭,因为它逐个运行它们。
发布于 2013-05-21 16:38:58
您可以创建抽象类,它将成为所有测试用例的基类。缓存应该初始化到这个类中,并存储在它的静态成员中。那么所有的测试都应该使用这个缓存。
另一种解决方案是实现将管理缓存的自定义测试运行器。然后,您必须使用注释@RunWith标记所有需要缓存的测试用例,并将测试运行器类传递到那里。
发布于 2013-05-21 16:48:41
创建一个Test Suite,其中包含初始化Cache的@BeforeClass方法,然后在其中添加所有测试用例。这也允许在之后轻松添加更多的测试类。如果重要的话,记得把它们按正确的顺序排列。Top suiteclass首先运行。
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestClass1.class,
TestClass2.class
)}
public class TestSuiteClass {
@BeforeClass
public void initCache() {
//Your init code here.
}
}一些有用的链接:http://junit.sourceforge.net/javadoc/org/junit/runner/RunWith.html http://junit.org/javadoc/4.9/org/junit/runners/Suite.SuiteClasses.html
稍微全面一点的例子:http://www.tutorialspoint.com/junit/junit_suite_test.htm
发布于 2013-05-21 16:36:53
我本以为@BeforeClass会满足您的需求。
有时几个测试需要共享计算成本很高的设置(比如登录数据库)。虽然这可能会损害测试的独立性,但有时这是必要的优化。使用@BeforeClass注释公共静态void no-arg方法会导致它在类中的任何测试方法之前运行一次
您可以在超类中使用它,后续的子类可能会简化您的代码/测试组织。
https://stackoverflow.com/questions/16665466
复制相似问题