我使用ActivityInstrumentationTestCase2来测试我的Android应用。目前,我通过命名方法testXXX来创建测试方法,其中XXX是一些任意名称。是否可以省略“测试”命名约定并按照JUnit的方式注释方法?我发现这个更好,因为我可以创建具有testXXX名称但不会被调用的方法。
答案 0 :(得分:1)
您可以使用@RunWith(AndroidJUnit4.class)
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityTest extends ActivityInstrumentationTestCase2<MyCoolActivity> {
private MainActivity mActivity;
public MainActivityTest() {
super(MainActivityTest.class);
}
@Before
public void setUp() throws Exception {
super.setUp();
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
mActivity = getActivity();
}
@Test
public void checkPreconditions() {
assertThat(mActivity, notNullValue());
// Check that Instrumentation was correctly injected in setUp()
assertThat(getInstrumentation(), notNullValue());
}
@After
public void tearDown() throws Exception {
super.tearDown();
}
}
在build.gradle中添加依赖项
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
// Testing-only dependencies
// Force usage of support annotations in the test app, since it is internally used by the runner module.
androidTestCompile 'com.android.support:support-annotations:23.0.1'
androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
}
@Before - 此方法在每次测试之前执行。它用于准备测试环境(例如,读取输入数据,初始化类)。
@Test:@Test注释将方法标识为测试方法。
@After: 每次测试后执行此方法。它用于清理测试环境(例如,删除临时数据,恢复默认值)。它还可以通过清理昂贵的内存结构来节省内存。