首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在所有junit测试用例中重用缓存

在所有junit测试用例中重用缓存
EN

Stack Overflow用户
提问于 2013-05-21 16:34:04
回答 3查看 1.4K关注 0票数 0

我们有多个测试用例将数据加载到缓存中并运行测试用例,.the测试用例运行得很好,但是当我们运行所有测试用例一次时,会花费很多时间,因为每次为每个测试case.Is加载缓存时,有任何方法可以加载缓存一次,然后在所有测试用例中使用缓存。

这样做的一种方法是将所有的测试用例放在一个类中,但这违背了目的,因为结果将很难分析(每个类中大约有5-10个测试方法,大约有30个测试类,所以生成的报告将非常大,并且没有组织)。我尝试使用测试套件,但缓存在每个测试用例之后被关闭,因为它逐个运行它们。

EN

回答 3

Stack Overflow用户

发布于 2013-05-21 16:38:58

您可以创建抽象类,它将成为所有测试用例的基类。缓存应该初始化到这个类中,并存储在它的静态成员中。那么所有的测试都应该使用这个缓存。

另一种解决方案是实现将管理缓存的自定义测试运行器。然后,您必须使用注释@RunWith标记所有需要缓存的测试用例,并将测试运行器类传递到那里。

票数 6
EN

Stack Overflow用户

发布于 2013-05-21 16:48:41

创建一个Test Suite,其中包含初始化Cache的@BeforeClass方法,然后在其中添加所有测试用例。这也允许在之后轻松添加更多的测试类。如果重要的话,记得把它们按正确的顺序排列。Top suiteclass首先运行。

代码语言:javascript
复制
@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

票数 1
EN

Stack Overflow用户

发布于 2013-05-21 16:36:53

我本以为@BeforeClass会满足您的需求。

有时几个测试需要共享计算成本很高的设置(比如登录数据库)。虽然这可能会损害测试的独立性,但有时这是必要的优化。使用@BeforeClass注释公共静态void no-arg方法会导致它在类中的任何测试方法之前运行一次

您可以在超类中使用它,后续的子类可能会简化您的代码/测试组织。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16665466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档