Java Espresso 2.0-用@Test在类内注释的方法扩展junit3 testcase
在使用Espresso 2.0附带的新Java Espresso 2.0-用@Test在类内注释的方法扩展junit3 testcase,java,android,android-testing,android-espresso,Java,Android,Android Testing,Android Espresso,在使用Espresso 2.0附带的新ActivityInstrumentationTestCase2类时,我收到一个奇怪的警告方法,该方法用@Test inside class扩展junit3 testcase注释 我的类看起来就像Google提供的示例: import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.te
ActivityInstrumentationTestCase2
类时,我收到一个奇怪的警告方法,该方法用@Test inside class扩展junit3 testcase
注释
我的类看起来就像Google提供的示例:
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static android.support.test.espresso.matcher.ViewMatchers.assertThat;
import static org.hamcrest.Matchers.notNullValue;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyCoolActivityTests extends ActivityInstrumentationTestCase2<MyCoolActivity> {
private MyCoolActivity mActivity;
public MyCoolActivityTests() {
super(MyCoolActivity.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();
}
}
有没有办法消除此警告?ActivityInstrumentationTestCase2是JUnit 3测试用例,因为它是从
测试用例
扩展而来的
@测试注释是JUnit3中使用的测试前缀命名约定的替代品。JUnit4测试类不再需要扩展TestCase或其任何子类。事实上,JUnit4测试不能扩展TestCase,否则AndroidJUnitRunner会将它们视为JUnit3测试
您可以迁移到由com.android.support.test:rules:0.4
(或更高版本)提供的,也可以使用JUnit3
另一个选项是由Espresso 2提供的,它具有
getInstrumentation()
,getContext()
,getTargetContext()
(以及更多)。这些方法以静态方式提供对当前工具、测试上下文和目标上下文的访问。这使得您可以编写自己的静态实用程序方法,以便在JUnit4测试用例类中使用。这些实用程序将模拟当前仅在基本JUnit3测试用例类中可用的功能。(这不再是必要的。)您是否在使用这些说明,因此在build.gradle中,您也有应用程序的依赖项,包括测试编译'com.android.support:support annotations:21.0.3'是的,我只是忘记将其添加到问题中,因为我已经从中去掉了不必要的内容。我感到困惑。。。在AndroidJUnitRunnerUserGuide中,他们有一个如何使用ActivityInstrumentationTestCase2和JUnit4的示例。事实上,这是我在寻找Junit4和Android时发现的唯一东西。你说ActivityInstrumentationTestCase2是JUnit3,我明白了。但是用户指南说它可以用于JUnit4。实际上,我有一个与用户指南中的示例完全相同的示例,它给了我警告。此外,当我试着运行它时,它说“空测试套件”,它2016年的android单元测试仍然是一团糟
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
}