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