android - Jenkins 和运行 AndroidJUnitRunner 仪器测试

标签 android jenkins junit4 build-automation android-instrumentation

我有一个 Android 应用程序,我正在尝试使用 Jenkins 进行设置。我已经使用 Android 模拟器插件启动模拟器,并使用 gradle 脚本构建项目,但我无法让它运行我使用 AndroidJUnitRunner 编写的简单测试。

Jenkins 的输出看起来像这样......

+ adb shell pm list instrumentation
instrumentation:com.android.emulator.connectivity.test/android.test.InstrumentationTestRunner (target=com.android.emulator.connectivity.test)
instrumentation:com.android.emulator.gps.test/android.test.InstrumentationTestRunner (target=com.android.emulator.gps.test)
instrumentation:com.android.smoketest.tests/com.android.smoketest.SmokeTestRunner (target=com.android.smoketest)
instrumentation:com.android.smoketest.tests/android.test.InstrumentationTestRunner (target=com.android.smoketest)
instrumentation:com.example.android.apis/.app.LocalSampleInstrumentation (target=com.example.android.apis)
[Short Sounds] $ /bin/sh -xe /tmp/hudson7415767398022941631.sh
+ adb shell am instrument -w com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner}
INSTRUMENTATION_STATUS_CODE: -1
android.util.AndroidException: INSTRUMENTATION_FAILED: com.sloths.speedy.shortsounds/android.support.test.runner.AndroidJUnitRunner

如您所见,我已经通过 shell 命令列出了 adb 工具。在列表中找不到 AndroidJUnitRunner。我半肯定它应该在那里正常工作。

我在 build.gradle 文件中添加了适当的配置标签...即...

defaultConfig { 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

我还添加了这些依赖项。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ...
    androidTestCompile 'com.android.support.test:runner:0.2'
    // Set this dependency to use JUnit 4 rules
    androidTestCompile 'com.android.support.test:rules:0.2'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'
}

如果它对这里有帮助,那就是我正在尝试运行的测试。这只是一个我希望失败的简单单元测试。

import android.support.test.runner.AndroidJUnit4;
import android.test.ActivityInstrumentationTestCase2;
import com.sloths.speedy.shortsounds.view.MainActivity;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class InitialFailingTest extends ActivityInstrumentationTestCase2<MainActivity> {

    public InitialFailingTest() {
        super(MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    @Test
    public void initialFailingTestForJenkins() {
        assertTrue(false);
    }
}

如何让 Jenkins 实际运行我的单元测试?非常感谢任何帮助。

最佳答案

尝试告诉 Jenkins 运行“gradle connectedAndroidTest”任务

关于android - Jenkins 和运行 AndroidJUnitRunner 仪器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998802/

相关文章:

Android JSONObject 在创建时跳过空值

java - 分页库最初返回空列表

playframework - 运行 Play 命令时如何关闭颜色代码?

Jenkins 管道sh返回stdout不起作用

spring - 如何使用 Junit 测试 Spring Controller 方法

android setOnItemClickListener 不能在一行上工作,但在另一行上可以,使用 2 行布局

android - 如何在 Android 应用程序中使用 Droid Text 从 Assets 中打开 pdf 文件

jenkins - 如何使用jenkins ci和electronic-builder在Mac上解决CodeSign失败?

java - Jersey 客户端将数据发送到 String

java - Java JUnit 测试中的 Selenium 2 错误 : Could not start a new session