我可以从活动中运行Expresso AndroidJUnit4.class吗?

时间:2019-01-30 13:05:47

标签: android

我正在使用espresso对我的android应用进行单元测试。当我按下按钮时,是否可以从真实设备运行测试?

未连接到android studio的设备可能会启动LoginTest.class吗?

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

    public static final String STRING_TO_BE_TYPED = "Andrei test";

    @Rule
    public ActivityTestRule<Login> mActivityRule = new ActivityTestRule<>(
            Login.class);

    @Test
    public void t1_LoginClass_Pushing_login_button_100times() {
        // Type text and then press the button.
        for (int y = 0; y < 100; y++) {
            onView(withId(R.id.btn_signup)).perform(click());
        }

    }
}

2 个答案:

答案 0 :(得分:0)

绝对不是。但是,您可以在真实设备中运行测试

答案 1 :(得分:0)

AndroidJUnit4测试运行器由工具控制...并且它安装了两个完全不同的软件包(应用程序和测试应用程序-测试应用程序无法直接启动,因为它是Mainfest.xml没有任何Activity,因为它是必需的)。您可以使用adb来启动它(IDE​​不会做其他事情),但是不能从应该被启动的应用程序包中启动...日志输出也表明了这一点;它显示为Connecting to ...

1/30 19:14:09: Launching Test Suite
$ adb push ./mobile/build/outputs/apk/debug/someapp-uni-debug.apk /data/local/tmp/com.acme.someapp.debug
$ adb shell pm install -t -r "/data/local/tmp/com.acme.someapp.debug"
Success
APK installed in 2 s 752 ms

$ adb push ./mobile/build/outputs/apk/androidTest/debug/mobile-debug-androidTest.apk /data/local/tmp/com.acme.someapp.debug.test
$ adb shell pm install -t -r "/data/local/tmp/com.acme.someapp.debug.test"
Success
APK installed in 1 s 743 ms

Running tests   
$ adb shell am instrument -w -r   -e debug true -e class 'com.acme.someapp.ApplicationTestSuite' com.acme.someapp.debug.test/androidx.test.runner.AndroidJUnitRunner
Waiting for application to come online: com.acme.someapp.debug.test | com.acme.someapp.debug
Connecting to com.acme.someapp.debug
Waiting for application to start debug server

请参阅https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests