Intellij Idea를 기반으로 한 Android Studio를 방금 다운로드했습니다.
어떻게 테스트를 만들까요?
테스트 모듈을 만드는 옵션이 있지만 이것은 아무것도하지 않는 것 같으며 src로 새 프로젝트를 만듭니다.
또한 기존 클래스에 대한 단위 테스트를 만들 수있는 단축키 CTRL + AlT + T를 눌러 보았지만 현재 프로젝트에 배치하려는 것 같습니다. 물론 이것은 TDD에 도움이되지 않습니다
누구든지 여기에 경험이 있습니까?
답변
이 답변은 Android 테스트를 막 시작하는 사람들을위한 것입니다. 테스트가 어떻게 작동하는지 확인하는 데 도움이되는 두 가지 간단한 예를 제공하겠습니다. 다음 10 분 동안 계속 진행하면 자신의 앱에 테스트를 추가 할 준비가 된 것입니다. 얼마나 쉬운 지 놀랄 것입니다. 나는 확실히했다.
Android 테스트 소개
수행 할 테스트에는 두 가지 유형이 있습니다.
- 로컬 단위 테스트. 이는 JVM (Java Virtual Machine)에서 로컬로 실행됩니다. 그들은 현지이기 때문에 빠릅니다. 이를 사용하여 Android API가 아닌 Java 만 필요한 코드 부분을 테스트 할 수 있습니다. (때때로 로컬에서 더 많은 것을 테스트하기 위해 가짜 API 객체를 만들 수 있습니다. 이것을 mocking 이라고합니다 . mock
Context
이 예시입니다.) - 계측 테스트. 이러한 테스트는 실제 기기 또는 에뮬레이터에서 실행됩니다. 그것은 로컬 테스트보다 느리게 만듭니다. 그러나 전체 Android API를 사용할 수 있기 때문에 더 유연합니다.
새 프로젝트를 생성하면 다음과 같은 기본 폴더가 표시됩니다.
모든 것이 이미 거기에 있으며 테스트를 만들기를 기다리고 있습니다. 이미 모든 설정이 완료되었습니다!
로컬 단위 테스트를 만드는 방법
ExampleUnitTest
위 이미지에 표시된 파일을 엽니 다 . 다음과 같이 보일 것입니다.
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
모든 테스트를 실행하려면 이중 녹색 화살표를 누르고 하나만 실행하려면 단일 녹색 화살표를 누릅니다. (이 경우 하나의 테스트 만 있으므로 둘 다 동일한 작업을 수행합니다.)
통과해야합니다 ( 이 답변을 읽을 때 2 + 2
여전히있는 한 4
). 축하합니다. 첫 번째 테스트를 실행했습니다!
나만의 테스트 만들기
우리 자신의 테스트를 작성합시다. 먼저 테스트 할 내용이 있도록이 클래스를 기본 앱 프로젝트에 추가합니다.
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
이제 addition_isCorrect()
테스트 클래스 의 메서드를 다음 코드와 같이 변경 하거나 다른 이름을 가진 다른 메서드를 추가합니다.
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);
}
}
다시 실행하면 통과하는 것을 볼 수 있습니다. 축하합니다. 첫 번째 테스트를 만들었습니다! (글쎄요, 기술적으로는 제 것이었지만, 충분히 가까워요. 제 것은 당신 것입니다.)
계측 테스트를 만드는 방법
ExampleInstrumentedTest
파일을 엽니 다 . 다음과 같이 보일 것입니다.
@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());
}
}
녹색 버튼 중 하나를 다시 누르십시오.
실제 장치가 연결되어 있거나 에뮬레이터가 설정되어있는 한, 장치를 시작하고 앱을 실행해야합니다. 축하합니다. 첫 번째 계측 테스트를 실행했습니다!
나만의 테스트 만들기
계측 테스트는 Espresso 를 사용 하여 테스트를 실행합니다. 앱을 테스트 할 수있는 작은 로봇 사용자와 비슷합니다. 버튼을 누르거나 TextView의 속성을 읽는 것과 같은 작업을 수행하도록 지시 할 수 있습니다.
직접 테스트하는 방법에 대한 지침을 작성할 수 있지만 이제 막 시작 했으므로 자동 기록 기능을 사용하겠습니다 . 아주 간단합니다.
먼저 UI에 버튼을 추가하여 작업 할 수 있도록합니다. 나는 이걸했다:
<?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>
그런 다음 메뉴에서 Run> Record Espresso Test 를 누릅니다.
시작 후 에뮬레이터에서 버튼을 클릭 한 다음 완료하려면 Record 대화 상자에서 OK를 선택합니다. 다음 테스트 코드가 자동으로 생성됩니다.
@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());
}
}
큰! 방금 첫 번째 계측 테스트를 만들었습니다! 매우 쉬웠습니다. 실제 테스트로 만들려면 어설 션을 추가해야 할 것입니다.하지만 그것은 레코더로도 쉽게 할 수 있습니다. 시계 동영상을 좀 더 깊이 이동합니다.
추가 연구
먼저 비디오를 본 다음 설명서를 읽었습니다. 모두 매우 도움이됩니다. 마지막 링크는 테스트 할 항목을 선택할 때 고려해야 할 몇 가지 중요한 사항을 다루는 기사 시리즈입니다.
- Android 테스트 패턴 (Android 개발자의 짧은 동영상 시리즈)
- 테스트 시작하기 (Android 문서)
- TDD를 통한 코드 품질을위한 3 단계
답변
편집 : 0.1.8부터 이것은 IDE에서 지원됩니다 . 아래 지침을 사용하는 대신 거기에있는 지침을 따르십시오.
다음 가이드 안드로이드 Gradle을 플러그인 사용자 내가 새로 생성 된 프로젝트에서 다음 단계를 수행하여 명령 줄에서 작업 테스트를 얻을 수 있었다 (I은 기본 ‘com.example.myapplication’패키지를 사용) :
- 테스트를 위해 src / instrumentTest / java 디렉토리를 추가하십시오.
- com.example.myapplication.test 패키지에 테스트 클래스 (ActivityTestCase 확장)를 추가하십시오.
- 가상 장치 시작
- 명령 줄 (MyApplicationProject / MyApplication 디렉터리)에서 ‘../gradlew connectedInstrumentTest’명령을 사용합니다.
이것은 내 테스트를 실행하고 테스트 결과를 MyApplicationProject / MyApplication / build / reports / instrumentTests / connected에 배치했습니다. 저는 Android 앱을 처음 테스트했지만 제대로 작동하는 것 같습니다.
IDE 내에서 동일한 테스트 클래스를 시도하고 실행할 수 있습니다. 당신은 필요합니다
- 빌드 .gradle을 업데이트하여 Maven Central을 저장소로 나열
- build.gradle 업데이트는 instrumentTestCompile 종속성으로 JUnit 3.8을 추가합니다 (예 : instrumentTestCompile ‘junit : junit : 3.8’).
- ‘프로젝트 구조’에서 수동으로 JUnit을 종속성 순서의 첫 번째로 이동하십시오.
그러나 이것은 실패합니다 (테스트를 실행할 때 사용 된 클래스 경로에 테스트 출력 디렉토리가 없음). 그러나 Android 특정 테스트 러너가 필요하다는 것을 이해하고 있기 때문에 이것이 작동하는지 확실하지 않습니다.
답변
gradle.build 파일 을 사용하는 것이 좋습니다 .
-
테스트를 위해 src / androidTest / java 디렉터리를 추가합니다 ( Chris 가 설명을 시작하는 것처럼 )
-
gradle.build 파일을 열고 거기에 지정하십시오.
android { compileSdkVersion rootProject.compileSdkVersion buildToolsVersion rootProject.buildToolsVersion sourceSets { androidTest { java.srcDirs = ['androidTest/java'] } } }
-
“Sync Project with Gradle file”(상단 패널)을 누릅니다. 이제 “java”폴더 ( “androidTest”내부)가 녹색으로 표시됩니다.
-
이제 모든 테스트 파일을 생성하고 실행할 수 있습니다.
답변
Rex St John 의이 게시물 은 Android 스튜디오를 사용한 단위 테스트에 매우 유용 하다고 생각 합니다 .
(출처 : rexstjohn.com )
답변
Android Studio v.2.3.3
테스트 할 코드 컨텍스트를 강조 표시하고 핫키를 사용하십시오. CTRL
+ SHIFT
+T
대화 인터페이스를 사용하여 설정을 완료하십시오.
테스트 프레임 워크는 최상의 결과를 위해 프로젝트 패키지 레이아웃을 미러링해야하지만 올바른 디렉터리 및 빌드 설정이있는 경우 사용자 지정 테스트를 수동으로 만들 수 있습니다.
답변
지금은 (스튜디오 0.61) 적절한 프로젝트 구조를 유지하는 것으로 충분합니다. Eclipse에서와 같이 별도의 테스트 프로젝트를 만들 필요가 없습니다 (아래 참조).
답변
Android Studio는 계속 발전하므로 위의 응답은 결국 더 이상 적용되지 않습니다. 현재 Android Studio 1.2.1.1 버전의 경우 테스트에 대한 멋진 자습서가 있습니다.
http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/