Tôi cần thực hiện một số công việc kiểm tra tự động cho ứng dụng Android mà không cần mã nguồn của nó. Tôi thấy cả robot và espresso đều có thể thực hiện công việc này, tôi đã quyết định sử dụng espresso vì sự hỗ trợ của Google.'android.support.test.espresso không tồn tại' khi tôi muốn sử dụng nó cho thử nghiệm apk riêng lẻ
Tôi muốn ký cả apk mục tiêu và gói thử nghiệm espresso với cùng chữ ký, gói ứng dụng đích giống như this sample.
Khi tôi bắt đầu để mã hóa các gói ứng dụng thử nghiệm espresso, tôi đã làm những công việc sau đây.
Các build.gradle trong Module: ứng dụng:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "tk.deedog.i01test"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
}
Mã nguồn của I01Test.java tôi:
package tk.deedog.i01test;
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
public class I01Test extends ActivityInstrumentationTestCase2 {
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "tk.tubabe.instrustmen101.Instruments101";
private static Class<?> launcherActivityClass;
Activity i101Acitvity;
static {
try {
launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public I01Test() {
super(launcherActivityClass);
}
@Override
protected void setUp() throws Exception {
super.setUp();
i101Acitvity = getActivity();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testButtonClick() {
onView(withText("Send")).perform(click());
}
}
Khi tôi cố gắng chạy chương trình này, Android studio nói với tôi rằng Error:(6, 44) error: package android.support.test.espresso does not exist
.
Mọi thứ bạn đã đăng có vẻ OK. Là I01Test.java của bạn dưới src/androidTest/hoặc src/main? Nó phải là cái cũ. – vaughandroid
@Baqueta Tôi chỉ cần đặt I01Test.java bên trong src/androidTest /, và chạy TestModule, nhưng có một lỗi 'Gây ra bởi: java.lang.ClassNotFoundException: Không tìm thấy lớp" tk.tubabe.instrustmen101.Instruments101 " '. Gói thử nghiệm và apk mục tiêu là hai apk khác nhau có cùng chữ ký. – liweijian
Nên "tk.tubabe.instrustmen101.Instruments101" là "tk.tubabe.instrustmen ** t ** 101.Instruments101"? Bạn chỉ có thể tham khảo lớp như bình thường, bạn không cần phải sử dụng sự phản chiếu để tìm nó. – vaughandroid