我希望将参数化测试添加到使用Robolectric测试框架的现有测试套件中,如下所示:
@RunWith(RobolectricTestRunner.class)
public class SomeTest {
/* ... Tons of tests */
}
其中一个测试是针对以前固定但现在需要参数的功能。This answer建议,为了以参数化的方式只运行一个测试,我应该添加@RunWith(Enclosed.class)
,然后将我想要参数化的测试 Package 在它自己的类中。不幸的是,似乎我必须选择 * 要么 * Enclosed.class
* 或 * RobolectricTestRunner.class
,而不是两者都选。
似乎有一个open issue on robolectric
与此相关,但问题的答案似乎是将整个测试 Package 在@RunWith(Enclosed.class)
中,然后将内部测试 Package 在一个带有@RunWith(RobolectricTestRunner.class)
的类中。考虑到我只是在一个相当大的测试用例集中改变一个测试,我对将所有东西重构到一组内部类中的想法并不感到惊讶。
有没有办法让Robolectric测试运行器从一个更大的套件中参数化一个测试?
1条答案
按热度按时间nlejzf6q1#
我也遇到了同样的问题,并通过以下方式使用 Enclosed 来做到这一点(代码是在Kotlin中):
我知道你不想让测试有内部类,但这是我发现的让Robolectric测试运行器从junit 4中要求的更大的套件中参数化一个测试的唯一方法。