Java Espresso 2.0-用@Test在类内注释的方法扩展junit3 testcase

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

在使用Espresso 2.0附带的新
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'
}