2014-12-22 5 views
6

У меня возникло странное предупреждение Method annotated with @Test inside class extending junit3 testcase при использовании нового класса ActivityInstrumentationTestCase2, поставляемого с Espresso 2.0.Espresso 2.0 - метод, аннотированный с помощью @Test внутри класса, расширяющего тестовую ячейку junit3

Мой класс выглядит так же, как тот, что 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(); 
    } 
} 

я добавил все необходимые вещи в build.gradle:

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' 
} 

Есть ли способ получить это предупреждение?

+0

вы используете эти инструкции https://code.google.com/p/android-test-kit/wiki/EspressoSetupInstructions – helleye

+0

Да я использую их – Niklas

+0

Так что в вашей сборке. gradle у вас также есть зависимости // зависимости приложения, в том числе test compile 'com.android.support:support-annotations:21.0.3' ' – helleye

ответ

16

ActivityInstrumentationTestCase2 - это тестовый корпус JUnit 3, поскольку он простирается от TestCase.

@Test аннотаций является заменой для именования тест-префикс, используемый в JUnit 3. JUnit 4 тестовые классы больше не требуется, чтобы продлить TestCase или любого из его подклассов. На самом деле тесты JUnit 4 не могут расширить TestCase, иначе AndroidJUnitRunner будет рассматривать их как тесты JUnit 3.

http://developer.android.com/tools/testing-support-library/index.html#AndroidJUnitRunner

Вы можете либо перейти на ActivityTestRule предоставленной com.android.support.test:rules:0.4 (или более поздней версии), или придерживаться JUnit 3.

Другой вариант InstrumentationRegistry, обеспечивается Espresso 2, который имеет getInstrumentation(), getContext(), getTargetContext() (и больше). Эти методы обеспечивают доступ к текущей аппаратуре, контексту тестирования и целевому контексту статическим образом. Это позволяет писать собственные методы статической утилиты для использования в классах тестов JUnit 4. Эти утилиты будут имитировать функциональность, которая в настоящее время доступна только в базовых классах JUnit 3. (Это больше нет необходимости.)

+1

Я запутался ... В AndroidJUnitRunnerUserGuide у них есть пример того, как работать с ActivityInstrumentationTestCase2 и JUnit4. на самом деле это единственное, что я нашел при поиске Junit4 и Android. Вы говорите, что ActivityInstrumentationTestCase2 является JUnit3, я получаю его. Но в руководстве пользователя говорится, что он может использоваться для JUnit4. На самом деле у меня есть пример, который точно такой же, как в Руководстве пользователя, и он дает мне предупреждение. Кроме того, когда я пытаюсь запустить его, он говорит «Empty Test Suite» –

+0

Все ссылки googlecode теперь не работают. –

+0

Благодарим за упоминание, что я обновлю ссылки. –