CircleCI ./gradlew测试命令失败

问题描述 投票:1回答:1

该gradlew测试命令失败的CircleCI。当我在本地执行相同的命令,它工作正常,所有的测试用例通过。我附上YML文件,日志从CircleCI和我的测试类。

这是我的YML文件。

version: 2
jobs:
  build:
    working_directory: ~/code
    docker:
    - image: circleci/android:api-28
    environment:
      JVM_OPTS: -Xmx4096m
      CC_TEST_REPORTER_ID: XXXXXXXXXXXXXXXXXX
    steps:
    - checkout
    - restore_cache:
        key: jars-{{ checksum "build.gradle" }}-{{ checksum  "app/build.gradle" }}
    #      - run:
    #         name: Chmod permissions #if permission for Gradlew Dependencies fail, use this.
    #         command: sudo chmod +x ./gradlew
    - run:
        name: Download Dependencies
        command: ./gradlew androidDependencies
    - save_cache:
        paths:
        - ~/.gradle
        key: jars-{{ checksum "build.gradle" }}-{{ checksum  "app/build.gradle" }}
#    - run:
#        name: Run Lint Tests
#        command: ./gradlew lint test
    - run:
        name: Run Tests
        command: ./gradlew test --info

#    - run:
#        name: Run Instrument Tests
#        command: ./gradlew connectedAndroidTest

    - store_artifacts: # for display in Artifacts: https://circleci.com/docs/2.0/artifacts/
        path: app/build/reports
        destination: reports
    - store_test_results: # for display in Test Summary: https://circleci.com/docs/2.0/collect-test-data/
        path: app/build/test-results

当我检查CircleCI日志,这些日志:

执行变换IdentityTransform - > IdentityTransform上工件core.jar添加(com.google.zxing:核心:3.3.0)执行变换IdentityTransform - > IdentityTransform上伪影的protobuf-java.jar(com.google.protobuf:protobuf的-java的:2.6。 1)执行变换IdentityTransform - > IdentityTransform上工件反向移植-UTIL-concurrent.jar(反向移植-util的并发:反向移植-util的并发:3.1)执行变换IdentityTransform - > IdentityTransform上工件xercesMinimal.jar(nekohtml:xercesMinimal:1.9。 6.2)执行变换IdentityTransform - > IdentityTransform上工件nekohtml.jar(nekohtml:nekohtml:1.9.6.2)执行对文件变换MockableJarTransform /opt/android/sdk/platforms/android-28/android.jar启动过程“摇篮测试执行2 ”。工作目录:/家庭/ circleci /代码/应用程序命令:/ usr / lib中/ JVM / JAVA-8的OpenJDK,AMD64 /斌/ java的-Djava.awt.headless =真-Djava.security.manager = worker.org。 gradle.process.internal.worker.child.BootstrapSecurityManager -Dorg.gradle.native =假-noverify -Dfile.encoding = UTF-8 -Duser.country -Duser.language = EN -Duser.variant电子艺界-cp /家/ circleci / .gradle /缓存/ 4.10.1 / workerMain / gradle这个-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain '摇篮测试执行2' 成功启动过程 '摇篮测试执行2'

com.mindvalley.mva.loginmodule.LoginActivityTest> isSkipLoginVisible STANDARD_OUT [Robolectric] com.mindvalley.mva.loginmodule.LoginActivityTest.isSkipLoginVisible:SDK = 28;资源=二进制调用loadFromPath(/system/framework/framework-res.apk,TRUE);模式=二进制SDK = 28

com.mindvalley.mva.loginmodule.LoginActivityTest> isSkipLoginVisible SKIPPED

任务:应用程序:testInternalReleaseUnitTest FAILED:应用程序:testInternalReleaseUnitTest(线程[任务的工人为 ':' 螺纹2,5,主])完成。接过3.413秒。

故障:建立失败,一个例外。

  • 出了什么问题:执行失败的任务“:应用程序:testInternalReleaseUnitTest”。 过程“摇篮测试执行2”具有非零退出值137此问题完成可能由不正确的测试过程配置而引起的。请参阅,测试执行部分在https://docs.gradle.org/4.10.1/userguide/java_plugin.html#sec:test_execution用户指南
  • 试试看:--stacktrace选项获取堆栈跟踪运行。与--debug选项来获得更多的日志输出运行。与--scan运行得到充分的认识。
  • 获取在https://help.gradle.org更多帮助

我LoginTestActivity

@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE, application = MockApplication.class)
public class LoginActivityTest {

    private LoginActivity activity;

    @Before
    public void setup() {
        activity = Robolectric.buildActivity(LoginActivity.class).create().resume().get();
    }

    @Test
    public void shouldNotBeNull() {
        Assert.assertNotNull(activity);
    }

    /**
     * check by default visibility. It should be not visible
     * Once we change variable in Login module it should be Visible
     */
    @Test
    public void isSkipLoginVisible() {
        TextView skipLogin = activity.findViewById(com.mindvalley.loginmodule.R.id.skip_login);
        LoginModule.getInstance().setSkipLogin(false);
        activity.setSkipLoginVisibility();
        Assert.assertTrue(skipLogin.getVisibility() == View.GONE);
        LoginModule.getInstance().setSkipLogin(true);
        activity.setSkipLoginVisibility();
        Assert.assertTrue( skipLogin.getVisibility() == View.VISIBLE);
    }

    @Test
    public void enableActionButtonTest() {
        CustomFeedbackText loginButton = activity.findViewById(com.mindvalley.loginmodule.R.id.login_btn_login);
        String email = "";
        String password = "";
        activity.enableActionButton(email, password);
        Assert.assertTrue(!loginButton.isEnabled());
        email = "[email protected]";
        password = "123";
        activity.enableActionButton(email, password);
        Assert.assertTrue(loginButton.isEnabled());
    }

    @Test
    public void skipLoginClicked() {
        TextView skipLogin = activity.findViewById(com.mindvalley.loginmodule.R.id.skip_login);
        Assert.assertTrue(!PreferenceManager.getBoolean(LoginModule.SKIP_LOGIN, false));
        skipLogin.performClick();
        Assert.assertTrue(PreferenceManager.getBoolean(LoginModule.SKIP_LOGIN, false));
    }

    @Test
    public void sanitizeLogin() {
        String email = "";
        String password = "";
        Assert.assertTrue(!activity.sanitizeLogin(email, password));
        email = "harsh";
        password = "";
        Assert.assertTrue(!activity.sanitizeLogin(email, password));
        email = "harsh@mindvalley";
        password = "";
        Assert.assertTrue(!activity.sanitizeLogin(email, password));
        email = "[email protected]";
        password = "";
        Assert.assertTrue(!activity.sanitizeLogin(email, password));
        email = "[email protected]";
        password = "test";
        Assert.assertTrue(!activity.sanitizeLogin(email, password));
        email = "[email protected]";
        password = "test123";
        Assert.assertTrue(activity.sanitizeLogin(email, password));
    }

    @Test
    public void loginClicked() {
        CustomFeedbackText loginButton = activity.findViewById(com.mindvalley.loginmodule.R.id.login_btn_login);
        EditText emailEditText = activity.findViewById(com.mindvalley.loginmodule.R.id.login_edittext_email);
        EditText passwordEditText = activity.findViewById(com.mindvalley.loginmodule.R.id.login_edittext_password);
        emailEditText.setText("[email protected]");
        passwordEditText.setText("test123");
        loginButton.performClick();
        Assert.assertTrue(Util_Auth0.getInstance().getAndroidClient() != null);
        // test update prefs method
        activity.updatePrefs();
        Assert.assertTrue(!PreferenceManager.getBoolean(LoginModule.SKIP_LOGIN, false));
        Assert.assertTrue(PreferenceManager.getBoolean(LoginModule.SIGNED_IN, false));
    }

    @After
    public void tearDown() {
        activity = null;
    }
}
android gradle android-testing robolectric circleci
1个回答
1
投票

在这里得到的答案

https://github.com/robolectric/robolectric/issues/4591#event-2116260870

下面是StackOverflow的答案Why are my Gradle builds dying with exit-code 137?链接

由于基督教威廉姆斯

© www.soinside.com 2019 - 2024. All rights reserved.