Jenkins和运行AndroidJUnitRunner工具测试

Sig*_*ron 5 build-automation android junit4 jenkins android-instrumentation

我有一个要与Jenkins建立的Android应用程序。我已经使用Android Emulator Plugin启动了一个模拟器,并使用gradle脚本构建了该项目,但是我无法让它运行我使用AndroidJUnitRunner编写的简单测试。

我从詹金斯的输出看起来像这样...

+ 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
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经通过shell命令列出了adb工具。在列表中找不到AndroidJUnitRunner。我是半积极的,应该在那里可以正常工作。

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

defaultConfig { 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Run Code Online (Sandbox Code Playgroud)

我还添加了这些依赖项。

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'
}
Run Code Online (Sandbox Code Playgroud)

如果它对我正在尝试运行的测试有用,以防万一。我只是想通过一个简单的单元测试而失败。

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何让Jenkins实际运行我的单元测试?任何帮助是极大的赞赏。

Wen*_*hao 6

尝试告诉詹金斯运行“ gradle connectedAndroidTest”任务

  • 您是否需要运行一个步骤来在 avd 上安装该 apk?您在运行connectedAndroidTest 之前执行过此操作吗? (2认同)

Yen*_*chi 5

你也可以做的准备步骤,connectedAndroidTest这是

./gradlew installDebug installDebugAndroidTest
Run Code Online (Sandbox Code Playgroud)

然后,您的测试包和AndroidJUnitRunner应该会显示出来pm list instrumentation。稍后,当您拥有更大的测试套件并且想要am instrument使用更多选项(例如指定测试大小)调用命令时,可能会有所帮助。