2014-12-22 13 views
6

Tôi nhận được cảnh báo lạ Method annotated with @Test inside class extending junit3 testcase khi sử dụng lớp ActivityInstrumentationTestCase2 mới được giao bằng Espresso 2.0.Espresso 2.0 - Phương pháp được chú thích bằng @Test bên trong lớp mở rộng junit3 testcase

Lớp học của tôi trông giống như một trong đó Google cung cấp như một ví dụ:

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(); 
    } 
} 

Tôi đã thêm tất cả mọi thứ cần thiết cho 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' 
} 

Có cách nào để nhận được cảnh báo này đi?

+0

bạn có đang sử dụng các hướng dẫn này https://code.google.com/p/android-test-kit/wiki/EspressoSetupInstructions – helleye

+0

Yep Tôi đã sử dụng chúng – Niklas

+0

Vì vậy, trong bản dựng của bạn. bạn cũng có '// phụ thuộc của ứng dụng, bao gồm thử nghiệm biên dịch 'com.android.support:support-annotations:21.0.3' ' – helleye

Trả lời

16

ActivityInstrumentationTestCase2 là trường hợp thử nghiệm JUnit 3 vì nó kéo dài từ TestCase.

@ Chú thích cuối cùng là thay thế cho quy ước đặt tên tiền tố được sử dụng trong JUnit 3. Các lớp thử nghiệm không yêu cầu mở rộng TestCase hoặc bất kỳ lớp con nào của nó. Trong thực tế, các xét nghiệm JUnit 4 không thể mở rộng TestCase, nếu không AndroidJUnitRunner sẽ coi chúng là các thử nghiệm JUnit 3.

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

Bạn có thể có thể di chuyển đến ActivityTestRule cung cấp bởi com.android.support.test:rules:0.4 (hoặc mới hơn), hoặc gắn bó với JUnit 3.

lựa chọn khác là InstrumentationRegistry, được cung cấp bởi Espresso 2, trong đó có getInstrumentation(), getContext(), getTargetContext() (và hơn thế nữa). Các phương thức này cung cấp quyền truy cập vào thiết bị đo đạc hiện tại, bối cảnh thử nghiệm và ngữ cảnh đích theo cách tĩnh. Điều này làm cho nó có thể viết các phương thức tiện ích tĩnh của riêng bạn để sử dụng trong các lớp trường hợp thử nghiệm JUnit 4. Các tiện ích này sẽ bắt chước các chức năng hiện chỉ có sẵn trong các lớp vỏ kiểm thử cơ sở JUnit 3. (Điều này không còn cần thiết nữa.)

+1

Tôi đã nhầm lẫn ... Trong AndroidJUnitRunnerUserGuide họ có một ví dụ về cách làm việc với ActivityInstrumentationTestCase2 và JUnit4. thực sự đó là điều duy nhất tôi tìm thấy khi tìm Junit4 và Android. Bạn nói ActivityInstrumentationTestCase2 là JUnit3, tôi hiểu rồi. Nhưng Hướng dẫn sử dụng cho biết nó có thể được sử dụng cho JUnit4. Tôi thực sự có một ví dụ đó là chính xác giống như một trong Hướng dẫn sử dụng và nó mang lại cho tôi những cảnh báo. Bên cạnh đó, khi tôi cố gắng chạy nó nó nói "Empty Test Suite" –

+0

Tất cả các liên kết 'googlecode' bây giờ đã bị hỏng. –

+0

Cảm ơn bạn đã đề cập rằng tôi sẽ cập nhật các liên kết. –

Các vấn đề liên quan