2013-05-16 22 views
96

Chỉ cần tải xuống Android Studio dựa trên ý tưởng Intellij.Tôi làm cách nào để tạo thử nghiệm trong Android Studio?

Làm cách nào để tạo thử nghiệm?

tôi nhận thấy có một tùy chọn cho tạo ra một thử nghiệm module nhưng điều này dường như không làm gì cả, chỉ tạo ra một dự án mới với src

Tôi cũng đã cố gắng nhấn tổ hợp CTRL + ALT + T nóng cho phép để tạo các bài kiểm tra đơn vị trên một lớp hiện có nhưng có vẻ như muốn đặt nó trong dự án hiện tại. Tất nhiên điều này không hữu ích với TDD

Có ai có kinh nghiệm ở đây không?

+2

Tôi cũng đã cố gắng tạo dự án thử nghiệm. Nếu bạn làm điều đó với công cụ dòng lệnh Android giống như bạn làm với một dự án Eclipse, thì bạn sẽ gặp lỗi vì nó không thể tìm thấy tệp AndroidManifest.xml. Có vẻ như Google cần cập nhật công cụ Android của họ để xử lý các dự án Grundle. Tuy nhiên, tôi mới thử nghiệm trong Android nên tôi không thể giúp bạn = ( – Kage

Trả lời

3

Một trong những thay đổi lớn có vẻ như là với Android Studio, ứng dụng thử nghiệm được tích hợp vào dự án ứng dụng.

Tôi không chắc liệu điều này có giúp ích cho vấn đề cụ thể của bạn hay không, nhưng tôi đã tìm thấy hướng dẫn về làm bài kiểm tra với dự án Gradle. Android Gradle user Guide

35

Chỉnh sửa: Kể từ 0.1.8 this is now supported in the IDE. Vui lòng làm theo hướng dẫn trong đó, thay vì sử dụng các hướng dẫn bên dưới.

Tiếp theo Android Gradle Plugin User Guide tôi đã có thể để có được kiểm tra làm việc trên dòng lệnh bằng cách thực hiện các bước sau trên một dự án mới được tạo ra (tôi đã sử dụng mặc định 'com.example.myapplication' gói):

  1. Add một thư mục src/instrumentTest/java cho các bài kiểm tra
  2. Thêm một lớp thử nghiệm (mở rộng ActivityTestCase) trong gói com.example.myapplication.test
  3. Bắt đầu một thiết bị ảo
  4. trên dòng lệnh (trong MyApplicationProject/MyApplic thư mục ation) sử dụng lệnh '../gradlew connectedInstrumentTest'

Điều này chạy các thử nghiệm của tôi và đặt kết quả thử nghiệm vào MyApplicationProject/MyApplication/build/reports/instrumentKết nối/kết nối. Tôi mới dùng thử các ứng dụng Android, nhưng nó có vẻ hoạt động tốt.

Từ bên trong IDE, bạn có thể thử và chạy cùng một lớp thử nghiệm. Bạn sẽ cần phải

  1. Cập nhật build.gradle vào danh sách Maven Central như là repo
  2. Cập nhật build.gradle thêm JUnit 3.8 như một sự phụ thuộc instrumentTestCompile ví dụ instrumentTestCompile 'junit: junit: 3.8'
  3. Trong 'Dự án Cơ cấu' bằng tay di chuyển JUnit để là người đầu tiên theo thứ tự phụ thuộc

Tuy nhiên điều này không (classpath sử dụng khi chạy các bài kiểm tra là mất tích thư mục đầu ra thử nghiệm) . Tuy nhiên, tôi không chắc chắn rằng điều này sẽ làm việc bất kể vì nó là sự hiểu biết của tôi rằng một Á hậu thử nghiệm Android cụ thể là bắt buộc.

19

Tôi khuyên bạn nên sử dụng gradle.build tệp.

  1. Thêm một src/androidTest/java thư mục cho các bài kiểm tra (Giống như Chris bắt đầu để giải thích)

  2. mở gradle.build tập tin và chỉ định có:

    android { 
    
        compileSdkVersion rootProject.compileSdkVersion 
        buildToolsVersion rootProject.buildToolsVersion 
    
        sourceSets { 
    
         androidTest { 
          java.srcDirs = ['androidTest/java'] 
         } 
        } 
    } 
    
  3. Nhấn "Dự án đồng bộ hóa với tệp Gradle" (ở trên cùng bảng điều khiển). Bạn sẽ thấy bây giờ một thư mục "java" (bên trong "androidTest") là một màu xanh lá cây.

  4. Bây giờ, bạn có thể tạo bất kỳ tệp thử nghiệm nào và thực thi chúng.

+0

Đừng quên androidTest.setRoot ('instrumentTest') –

+3

Trong phiên bản Android Studio hiện tại, không cần thiết, thay thế mọi thứ một tên ** instrumentTest ** với ** androidTest ** –

+0

Tên 'instrumentTest' và 'androidTest' hoàn toàn tùy ý. Chúng chỉ là tên thư mục cho dự án thử nghiệm của bạn. Bạn cũng có thể tạo một thư mục 'tests'. , tên gói của SDK trong khung thử nghiệm là android.test.InstrumentationTestCase. Vì vậy, về mặt kinh tế, tôi tin rằng 'công cụ' hoặc 'thiết bị đo đạc' vẫn có ý nghĩa đối với việc đặt tên cho một thử nghiệm của bạn. Xem mã nguồn sau: http://grepcode.com/file/ repository.grepcode.com/java/ext/com.google.android/android/4.4.2_r1/android/test/InstrumentationTestCase.java#InstrumentationTestCase –

7

Tính đến bây giờ (phòng thu 0,61) duy trì cấu trúc dự án thích hợp là đủ. Không cần phải tạo dự án thử nghiệm riêng biệt như trong nhật thực (xem bên dưới).

Tests structure

2

Android Studio đã loại một mục tiêu di động, đầu tiên là một bản xem trước phát triển và bây giờ đang ở phiên bản beta. Đường dẫn cho các lớp Test trong dự án đã thay đổi theo thời gian, nhưng cho dù bạn đang sử dụng phiên bản AS nào, đường dẫn được khai báo trong tệp .iml của bạn. Hiện nay, với phiên bản 0.8.3, bạn sẽ tìm thấy những điều sau đây trong tập tin IML nội:

 <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> 
    <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> 
    <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> 
    <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> 
    <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> 
    <sourceFolder url="file://$MODULE_DIR$/src/androidTest/groovy" isTestSource="true" /> 
    <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> 
    <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> 

File .iml là nói cho bạn nơi để đặt các lớp học thử nghiệm của bạn.

2

Kể từ Android Studio 1.1, chúng tôi đã có hỗ trợ chính thức (thử nghiệm) để viết Bài kiểm tra đơn vị (Hoạt động của Roboelectric).

Nguồn: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support

+0

Hỗ trợ viết các bài kiểm tra Android, vừa được nâng cấp, với thư viện kiểm tra hỗ trợ mới. Bạn có thể xem bản trình bày hay tại đây: https: // docs.google.com/presentation/d/1EtFKPluGiuxZcr4W_cAziEY_--wbY_1otw44XEBv7JA/edit#slide=id.g98a986571_0_356 –

4

Android Studio giữ phát triển nên các câu trả lời ở trên cuối cùng sẽ không còn phù hợp. Đối với phiên bản hiện tại của Android Studio 1.2.1.1, có một hướng dẫn tốt đẹp về thử nghiệm tại địa chỉ:

http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/

+2

Có, AS tiếp tục phát triển, do đó, thật ngớ ngẩn khi một người nào đó tạo ra một bài viết về công nghệ tiên tiến và không bao giờ đề cập đến số phiên bản áp dụng cho. manh mối duy nhất là một ngày ở dưới cùng. – Tom

3

Cách đơn giản nhất tôi thấy là sắp xếp hợp lý trong my following blog post:

  1. Tạo một thư mục trong đó bạn sẽ viết tất cả các bài kiểm tra đơn vị của bạn (tốt nhất là com.example.app.tests)
  2. Tạo một lớp thử nghiệm mới (tốt hơn là NameOfClassTestedTests, tức là BankAccountLoginActivityTests)
  3. Mở rộng InstrumentationTes tCase
  4. Viết kiểm tra đơn vị không thành công để đảm bảo chúng tôi đã cấu hình thành công các thử nghiệm đơn vị
  5. Lưu ý rằng tên phương pháp thử nghiệm đơn vị phải bắt đầu bằng từ "test" (tốt hơn là testTestedMethodNameExpectedResult() i.e testBankAccountValidationFailedShouldLogout())
  6. Cấu hình dự án của bạn cho unit tests:
  7. Mở 'Run ...' menu và nhấp vào 'chỉnh sửa cấu hình'
  8. Nhấp vào nút +
  9. Chọn Android Tests mẫu
  10. Nhập tên cho cấu hình chạy của bạn (tốt nhất là 'Kiểm tra tên ứng dụng')
  11. Chọn ứng dụng của bạn trong hộp tổ hợp mô-đun
  12. Chọn nút radio “Tất cả trong gói” (thường là bạn muốn chọn tùy chọn này vì nó chạy tất cả các kiểm tra đơn vị trong tất cả các lớp học thử nghiệm của bạn)
  13. Điền vào tên gói kiểm tra từ bước 1 (tức là com.example.app.tests)
  14. Chọn thiết bị bạn muốn chạy thử nghiệm của bạn trên
  15. Áp dụng và lưu cấu hình
  16. kiểm tra Run đơn vị (và hy vọng thất bại):
  17. Chọn cấu hình thử nghiệm mới được tạo ra của bạn từ trình đơn Run
  18. Nhấn Run và đọc kết quả ở đầu ra giao diện điều khiển

Chúc may mắn làm cho mã của bạn dễ đọc hơn, dễ bảo trì và được thử nghiệm tốt!

+0

Câu hỏi là về kiểm tra thiết bị đo đạc! Tôi cũng gặp khó khăn khi viết một số bài kiểm tra thiết bị đo đạc. Xem câu hỏi của tôi tại http://stackoverflow.com/questions/35426990/no-error-still-android-studio-says-no-tests-were-found – Monica

0

Thêm bên dưới lib bên trong tập tin gradle

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

Tạo lớp HomeActivityTest bên trong thư mục androidTest và trước khi chạy thử nghiệm thêm flurry_api_key và chuỗi sender_id bên trong tập tin tài nguyên chuỗi và thay đổi giá trị cho sự thất bại và thành công như vậy.

@RunWith(AndroidJUnit4.class) 
public class HomeActivityTest 
{ 
    private static final String SENDER_ID = "abc"; 
    private static final String RELEASE_FLURRY_API_KEY = "xyz"; 

    @Test 
    public void gcmRegistrationId_isCorrect() throws Exception 
    { 
     // Context of the app under test. 
     Context appContext = InstrumentationRegistry.getTargetContext(); 

     Assert.assertEquals(SENDER_ID, appContext.getString(R.string.sender_id)); 
    } 

    @Test 
    public void flurryApiKey_isCorrect() throws Exception 
    { 
     // Context of the app under test. 
     Context appContext = InstrumentationRegistry.getTargetContext(); 

     Assert.assertEquals(RELEASE_FLURRY_API_KEY, appContext.getString(R.string.flurry_api_key)); 
    } 
} 
16

Câu trả lời này dành cho những người mới bắt đầu thử nghiệm Android. Tôi sẽ cung cấp hai ví dụ đơn giản để giúp bạn xem cách thử nghiệm hoạt động. Nếu bạn theo dõi trong 10 phút tiếp theo, bạn sẽ được thiết lập để bắt đầu thêm các bài kiểm tra vào ứng dụng của riêng mình. Tôi nghĩ bạn sẽ ngạc nhiên vì nó dễ đến mức nào. Tôi chắc chắn là vậy.

Giới thiệu về thử nghiệm Android

Có hai loại kiểm tra khác nhau mà bạn sẽ thực hiện.

  • Kiểm tra đơn vị địa phương. Chúng được chạy cục bộ trên JVM (Máy ảo Java). Vì họ là người địa phương, họ rất nhanh. Bạn có thể sử dụng chúng để kiểm tra các phần mã của bạn chỉ cần Java chứ không phải API Android. (Đôi khi bạn có thể tạo đối tượng API giả để thử nghiệm nhiều thứ hơn tại địa phương. Đây được gọi là mocking. Ví dụ: Context. Ví dụ:
  • Thử nghiệm được kiểm tra. Các thử nghiệm này được chạy trên một thiết bị thực hoặc trong trình giả lập. Điều đó làm cho chúng chậm hơn so với các bài kiểm tra địa phương. Tuy nhiên, chúng linh hoạt hơn bởi vì bạn có sẵn API Android đầy đủ cho bạn.

Tạo dự án mới và bạn sẽ thấy các thư mục mặc định sau.

enter image description here

Mọi thứ đều đã ở đó và chờ đợi cho bạn để tạo ra các bài kiểm tra của bạn. Tất cả đã được thiết lập rồi!

Làm thế nào để tạo ra đơn vị địa phương kiểm tra

Mở ExampleUnitTest tập tin hiển thị trong hình ở trên. nó sẽ giống như thế này:

public class ExampleUnitTest { 
    @Test 
    public void addition_isCorrect() throws Exception { 
     assertEquals(4, 2 + 2); 
    } 
} 

Nhấn mũi tên màu xanh lá cây kép để chạy tất cả các thử nghiệm hoặc mũi tên màu xanh lá cây duy nhất để chạy chỉ một. (Trong trường hợp này chỉ có một bài kiểm tra để họ có cả hai làm điều tương tự.)

enter image description here

Nó phải vượt qua (miễn là 2 + 2 vẫn là 4 khi bạn đang đọc câu trả lời này). Xin chúc mừng, bạn vừa chạy thử nghiệm đầu tiên của mình!

Làm bài kiểm tra của riêng bạn

Hãy viết thử nghiệm của chúng ta. Đầu tiên thêm lớp này đến dự án ứng dụng chính của bạn để chúng tôi có một cái gì đó để kiểm tra:

public class MyClass { 
    public int add(int a, int b) { 
     return a + b; 
    } 
} 

Bây giờ thay đổi phương pháp addition_isCorrect() trong lớp thử nghiệm để được giống như đoạn mã sau (hoặc chỉ cần thêm một phương pháp khác với một cái tên khác) :

public class ExampleUnitTest { 
    @Test 
    public void addition_isCorrect() throws Exception { 
     MyClass myClass = new MyClass(); 
     int result = myClass.add(2, 2); 
     int expected = 4; 
     assertEquals(expected, result); 
    } 
} 

Chạy lại và bạn sẽ thấy nó vượt qua. Xin chúc mừng, bạn vừa tạo thử nghiệm đầu tiên của riêng mình! (Vâng, tôi đoán về mặt kỹ thuật nó là của tôi, nhưng, hey, gần đủ. Có gì tôi là của bạn.)

Làm thế nào để tạo ra các bài kiểm tra instrumented

Mở tệp ExampleInstrumentedTest. nó sẽ trông giống như sau:

@RunWith(AndroidJUnit4.class) 
public class ExampleInstrumentedTest { 
    @Test 
    public void useAppContext() throws Exception { 
     // Context of the app under test. 
     Context appContext = InstrumentationRegistry.getTargetContext(); 

     assertEquals("com.example.myapp", appContext.getPackageName()); 
    } 
} 

Nhấn lại một trong các nút màu xanh lục đó.

enter image description here

Chừng nào bạn có một thiết bị thực kết nối hoặc giả lập thiết lập, nó cần phải có bắt đầu nó lên và chạy ứng dụng của bạn. Xin chúc mừng, bạn vừa chạy thử nghiệm được thử nghiệm đầu tiên của mình!

Làm bài kiểm tra của riêng bạn

Các thử nghiệm instrumented sử dụng Espresso để chạy thử nghiệm. Nó giống như người dùng rô bốt nhỏ của riêng bạn mà bạn có thể thử nghiệm ứng dụng của mình. Bạn có thể yêu cầu nó làm một cái gì đó như nhấn một nút hoặc đọc các thuộc tính của một TextView.

Bạn có thể viết hướng dẫn về cách thực hiện kiểm tra bằng tay, nhưng vì chúng tôi mới bắt đầu, hãy sử dụng số auto-record function. Nó siêu đơn giản.

Trước tiên hãy thêm nút vào giao diện người dùng của bạn để chúng tôi có thứ gì đó phù hợp.Tôi đã làm điều này:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.myapp.MainActivity"> 

    <Button 
     android:id="@+id/myButton" 
     android:text="Click me" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

</android.support.constraint.ConstraintLayout> 

Sau đó nhấn Run> Ghi Espresso Thử nghiệm trong menu.

enter image description here

Sau khi nó bắt đầu, nhấp vào nút trong giả lập và sau đó để kết thúc chọn OK trên hộp thoại Record. Nó sẽ tự động tạo ra mã kiểm tra sau.

@LargeTest 
@RunWith(AndroidJUnit4.class) 
public class MainActivityTest { 

    @Rule 
    public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class); 

    @Test 
    public void mainActivityTest() { 
     ViewInteraction appCompatButton = onView(
       allOf(withId(R.id.myButton), withText("Click me"), isDisplayed())); 
     appCompatButton.perform(click()); 
    } 
} 

Tuyệt vời! Bạn vừa mới tạo thử nghiệm đầu tiên cho bạn! Đó là siêu dễ dàng. Bạn có lẽ nên thêm một khẳng định để làm cho nó một thử nghiệm thực sự, nhưng đó là khá dễ dàng để làm với máy ghi âm, quá. Xem this video để đi sâu hơn một chút.

Nghiên cứu thêm

Tôi sẽ xem video trước và sau đó đọc qua tài liệu. Đó là tất cả khá hữu ích. Liên kết cuối cùng là một loạt các bài viết bao gồm một số điều quan trọng cần suy nghĩ về khi chọn những gì cần kiểm tra.

+1

Câu trả lời tuyệt vời @Suragch. Câu hỏi nhanh: nơi tôi sẽ đặt các tập tin hỗ trợ cho các trường hợp thử nghiệm đơn vị địa phương? Đó là hacky, nhưng tôi rất vui khi đặt đường dẫn đầy đủ từ cơ sở của bài kiểm tra, nhưng nếu tôi chạy trong Android Studio, các thử nghiệm chạy từ _root_'/app', tuy nhiên nếu tôi chạy từ dòng lệnh Gradle (hoặc CI) thì nó là _root_. (Lý tưởng là tôi muốn truy cập các thư mục 'asset' cụ thể khi chạy một trong hai cách). – mm2001

+0

@ mm2001, tôi đã viết câu trả lời này như là một cách để tìm hiểu làm thế nào để tự kiểm tra, vì vậy tôi thậm chí còn không nhận được như xa như bạn có. Nếu bạn tìm ra điều này trước khi tôi làm, bạn có thể để lại một bình luận? – Suragch

+0

Tôi thấy điều này hữu ích: http://stackoverflow.com/a/42751502/19506 - nó nói tạo một thư mục 'kiểm tra/tài nguyên' và đặt các tệp ở đó, ví dụ: 'test.txt' và truy cập chúng với' getClass(). getClassLoader(). getResource ("test.txt") '. Tôi đã quyết định rằng việc truy cập trực tiếp nội dung APK có thể là một ý tưởng tồi, vì vậy tôi sẽ giải quyết vấn đề đó bằng cách sao chép các tệp để kiểm tra trong bước xây dựng hoặc trong quá trình cập nhật bên ngoài. Có một số câu hỏi còn lại về các phiên bản khác nhau của Gradle, nhưng tôi chưa gặp phải điều đó. – mm2001

0

Android Studio v.2.3.3

Highlight mã bối cảnh mà bạn muốn kiểm tra, và sử dụng phím nóng: CTRL + SHIFT + T

Sử dụng giao diện hộp thoại để hoàn tất thiết lập của bạn.

Khung kiểm tra được cho là sẽ phản ánh bố cục gói dự án của bạn để có kết quả tốt nhất, nhưng bạn có thể tạo thử nghiệm tùy chỉnh theo cách thủ công, miễn là bạn có đúng cài đặt thư mục và xây dựng.

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