我需要在Android应用中测试一项活动。 $data
的文档说:
此类提供单个活动的功能测试。
ActivityInstrumentationTestCase2
的文档说:
此规则提供单个活动的功能测试。
几乎一样的话。除了我编码的两个样本外,还要做同样的事情。我应该更喜欢ActivityTestRule
而不是ActivityTestRule
,反之亦然?
我看到扩展ActivityInstrumentationTestCase2
看起来像JUnit3样式的测试(它的祖先是ActivityInstrumentationTestCase2
,测试方法应该以单词junit.framework.TestCase
开头。)
使用ActivityTestRule
test
扩展ActivityInstrumentationTestCase2
package sample.com.sample_project_2;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.LargeTest;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ApplicationTest {
@Rule
public ActivityTestRule<SecAct> mActivityRule = new ActivityTestRule(SecAct.class);
@Test
public void foo() {
onView(withId(R.id.editTextUserInput)).perform(typeText("SAMPLE"));
}
}
答案 0 :(得分:2)
对于你的例子,没有区别。你可以使用它们中的任何一个。
根据OO原则,我们将“更喜欢构成而不是继承”。 ActivityTestRule<>
的用法是通过合成,而ActivityInstrumentationTestCase2<>
是继承。
有时,我更喜欢为我的测试类提供一个公共基类来重用常见的初始化。这有助于我根据主题对测试进行分组。 ActivityTestRule<>
允许我做这些事情。
由于这些原因,我更喜欢ActivityTestRule<>
。否则,我没有看到任何差异。