JUnit android测试classinheritance
我有一些简单的Android应用程序和一些特浓咖啡测试。 我想编写一些基类,这样我的所有测试类都将继承它的@beforeClass和@afterClass方法,但问题是当我像下面的代码示例那样执行时,JUnit没有在al中看到任何测试。 我Empty test suite.
信息。 有什么问题?
代码示例:
public class RealmTest {
protected static Realm realm;
@BeforeClass
public static void beforeClass() {
realm = Realm.getDefaultInstance();
realm.setAutoRefresh(true);
}
@AfterClass
public static void afterClass() {
realm.close();
}
}
@RunWith(AndroidJUnit4.class)
public class MainActivityTest extends RealmTest {
@Rule
public IntentsTestRule<MainActivity> activityTestRule = new IntentsTestRule<>(MainActivity.class);
@Test
public void startedFine() {
assertNotNull(realm);
onView(withId(R.id.button)).perform(click());
intended(hasComponent(new ComponentName(getTargetContext(), EducationActivity.class)));
}
}
如果我将运行所有测试,则MainActivityTest的测试将不会运行。 感谢您的帮助,请说明是否需要一些额外的信息。
猜测:JUnit环境不寻找静态方法。 所以,也许你只是从你的基本方法中删除这个关键字(猜你可以保持你的Realm静态;我假设你真的只想要其中的一个)。
但是,另一个建议是:不要对测试用例使用继承。
让测试用例对您有价值的一点是:他们应该很快让您找到并修复生产代码中的错误。
但是当你的“设置”对你的测试用例是隐藏的时候 - 因为事情不仅发生在某些@Before方法中......而且还发生在某个地方的@Before方法中,在某个不同的类中......好吧,这会严重增加你的时间将需要了解一个失败的测试用例。 因为:不是仅仅学习测试用例,而是发现自己在测试代码中进行挖掘,以便了解除了失败的测试方法本身的代码之外发生了什么。
因此:要平衡“代码重复”与“测试案例容易理解”方面的关系非常小心!
链接地址: http://www.djcxy.com/p/64105.html上一篇: JUnit android test classinheritance
下一篇: Junit Test Method