반응형
build.gradle
전체 프로젝트 build.gradle이 아닌 module의 build.gradle에 해당 그래들 내용 작성
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 29
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
// 아래 부분이 Espresso를 위해 필요한 내용들
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
}
activity_main.xml
editText와 textView 그리고 button을 작성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="hello world"/>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
MainActivity.java
editText에서 변하는 내용을 textView에 set해주고 button을 눌러주면 toast로 textView의 내용을 보여준다.
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private TextView textView;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.edit_text);
textView = findViewById(R.id.text_view);
button = findViewById(R.id.btn);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
textView.setText(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), textView.getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
EspressoTest.java
Espresso를 이용한 테스트 아래 주석을 통해 좀더 자세히 적어두었다.
package com.example.myapplication;
import androidx.test.espresso.Espresso;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.assertion.ViewAssertions;
import androidx.test.espresso.matcher.ViewMatchers;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.rule.ActivityTestRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class EspressoTest {
// 해당 activity에서 실행하고자 함을 나타낸다.
@Rule
public ActivityTestRule mActivityRule = new ActivityTestRule(MainActivity.class);
@Test
public void myTest(){
// edit_text를 찾아서 거기에 crocus라는 내용을 적는다.
Espresso.onView(ViewMatchers.withId(R.id.edit_text)).perform(ViewActions.typeText("crocus"), ViewActions.closeSoftKeyboard());
// text_view를 찾아서 현재 textView에 담긴 내용이 crocus인지 확인한다. (assert이용)
Espresso.onView(ViewMatchers.withId(R.id.text_view)).check(ViewAssertions.matches(ViewMatchers.withText("crocus")));
// 버튼을 클릭하게 만들어 Toast가 나타나도록한다.(토스트는 앞선 MainActivity에 버튼 행동 정의)
Espresso.onView(ViewMatchers.withId(R.id.btn)).perform(ViewActions.click());
}
}
반응형
'Applied > Unit Test' 카테고리의 다른 글
[JUnit] Espresso를 위한 JUnit 기초 (0) | 2020.02.03 |
---|---|
[Espresso] Espresso 개념 및 환경 구성 (0) | 2020.01.30 |
[Mockito] Mockito를 이용한 Unit Test (2) | 2019.07.16 |
[Mockito] Mock 개념(Mock Object) (0) | 2019.07.16 |
[JUnit] Android UnitTest, JUnit을 이용한 유닛 테스트 (0) | 2019.07.09 |