首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CircleCI ./gradlew测试命令失败

CircleCI ./gradlew测试命令失败
EN

Stack Overflow用户
提问于 2019-02-04 10:15:17
回答 1查看 1.7K关注 0票数 1

gradlew测试命令在CircleCI上失败。当我在本地执行相同的命令时,它可以正常工作,并且所有的测试用例都通过了。我正在附加yml文件、来自CircleCI的日志和我的测试类。

这是我的yml文件。

代码语言:javascript
复制
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的日志时,以下是日志:

在工件上执行transform IdentityTransform -> IdentityTransform core.jar (com.google.z行:core:3.3.0)在工件protobuf java.jar上执行转换IdentityTransform -> IdentityTransform (com.google.protobuf:protobuf-java:2.6.1),在工件backport上执行转换IdentityTransform -> IdentityTransform -util-concurrent.jar,在工件xercesMinimal.jar上执行转换IdentityTransform -> IdentityTransform (nekohtml:xercesMinimal:1.9.6.2)在工件/opt/android/sdk/platforms/android-28/android.jar (nekohtml:nekohtml:1.9.6.2)上执行转换IdentityTransform -> IdentityTransform (nekohtml:nekohtml:1.9.6.2),在文件IdentityTransform启动进程'Gradle Test 2‘上执行转换MockableJarTransform。工作目录: /home/circleci/code/app命令:/usr/lib/jvm/java-8-OpenJDK-AMD 64/bin/java -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Djava.awt.headless=true -Dorg.gradle.native=false -noverify -Dfile.code=utf-8 -Duser.country -Duser.language=en -Duser.variant -ea -cp -cpworker.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;resources=binary称为loadFromPath(/system/framework/framework-res.apk,true);mode=binary sdk=28 com.mindvalley.mva.loginmodule.LoginActivityTest > isSkipLoginVisible跳过 任务:app:testInternalReleaseUnitTest失败:app:testInternalReleaseUnitTest (ThreadTask worker for“:”线程2,5,main)完成。花了3.413秒。失败:生成失败,出现异常。

  • 哪里出了问题:任务执行失败':app:testInternalReleaseUnitTest‘。 进程‘分级测试执行器2’完成与非零出口值137这个问题可能是由不正确的测试进程配置。请参阅execution用户指南中的测试执行部分。
  • 尝试:使用--stacktrace选项运行以获得堆栈跟踪。使用--调试选项运行以获得更多日志输出。用扫描来获得完整的洞察力。
  • https://help.gradle.org获得更多帮助

我的LoginTestActivity

代码语言:javascript
复制
@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 = "harsh@mindvalley.com";
        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 = "harsh@mindvalley.com";
        password = "";
        Assert.assertTrue(!activity.sanitizeLogin(email, password));
        email = "harsh@mindvalley.com";
        password = "test";
        Assert.assertTrue(!activity.sanitizeLogin(email, password));
        email = "harsh@mindvalley.com";
        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("harsh@mindvalley.com");
        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;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-02-07 03:32:14

答案在这里

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

下面是堆栈溢出应答Why are my Gradle builds dying with exit-code 137?的链接

谢谢克里斯蒂安·威廉姆斯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54513980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档