Cod*_*ice 4 android junit4 junit-rule
我已经编写了一个TestRule用于我的Android测试套件的自定义.它填充了受测试应用程序使用的数据库中的表.现在我需要用这个DataRule沿ActivityTestRule.我可以在我的测试类中注明两个字段@Rule吗?如何控制规则的应用顺序?
背景:
Android API提供了一个TestRule来启动一个Activity,它是每个带UI的应用程序的核心类.我的应用程序有一个数据库,我有几个测试,要求数据库预先填充一些已知的数据.以前,使用基于JUnit3的测试,我使用抽象超类来集中准备数据库的代码,然后我为不同的测试用例扩展了这个超类.现在我尝试使用JUnit 4实现相同的逻辑.我最近了解到测试规则是提供跨测试重用的逻辑的一种方式,所以我试图将逻辑从我的超类移到测试规则.这是实现我的目标的适当方式吗?
您当然可以@Rule在一次测试中拥有多个字段.我不确定规则应用程序的默认顺序是什么,或者它是否定义得很好.但是,如果排序很重要,您可以使用它来控制它,RuleChain
这允许您在测试用例中有多个规则时定义如何应用规则的顺序.
来自Javadoc ......
@Rule
public RuleChain chain = RuleChain
.outerRule(new LoggingRule("outer rule")
.around(new LoggingRule("middle rule")
.around(new LoggingRule("inner rule");
Run Code Online (Sandbox Code Playgroud)