当前位置: 首页 > 知识库问答 >
问题:

CircleCI./gradlew测试命令失败

樊烨烨
2023-03-14

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的日志时,这些日志是:

执行转换IdtyTransform-

com . mind valley . MVA . log in module . loginactivitytest

com . mind valley . MVA . log in module . loginactivitytest

任务 :app:test内部发布设备测试失败 :app:test内部发布设备测试(线程[':'线程2,5,main]的任务辅助角色)已完成。耗时 3.413 秒。

失败:构建失败,出现异常。

>

  • 出错的地方:任务': app: testInternalReleaseUnitTest'执行失败。

    进程'Gradle Test Execator 2'以非零退出值137结束此问题可能是由不正确的测试进程配置引起的。请参阅用户指南中的测试执行部分,https://docs.gradle.org/4.10.1/userguide/java_plugin.html#sec:test_execution

    尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--debug选项运行以获取更多日志输出。使用--can运行以获得完整的见解。

    在https://help.gradle.org获得更多帮助

    我的登录测试活动

    @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;
        }
    }
    
  • 共有1个答案

    董和泽
    2023-03-14

    在这里得到答案

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

    这里是stackoverflow答案的链接为什么我的Gradle构建会因为退出代码137而死亡?

    谢谢Christian Williams

     类似资料:
    • 我正在和gradlew一起做一个Java项目。我使用Ubuntu Linux作为我的操作系统。当我运行“Gradle”时,它会运行,并给我信息。但当我运行“gradlew”时,它输出为“no command'gradlew'found,did you mean:command'gradle'from package'gradle'(universe)gradlew:command not foun

    • 问题内容: 我正在使用gradlew进行Java项目。我使用Ubuntu Linux作为操作系统。当我运行“ gradle”时,它将运行并提供信息。但是,当我运行“ gradlew”时,其输出为“未找到命令’gradlew’,您的意思是:软件包’gradle’(universe)gradlew中的命令’gradle’:未找到命令” 我做了研究,有了jdk,并且做了sudo apt-get inst

    • 我使用spring网站制作了我的项目,有以下选项:-gradle项目,java,spring启动版本2.4.5,java版本8,依赖项:-spring Web,Thymeleaf,spring数据API

    • 我在Android Studio中有以下形式的Espresso instrumentaion测试用例。 现在,我想单独运行几个类。 例如:我只想使用gradlew命令运行CrashersTest和EM3AppUtil类,而使用另一个命令运行rest类。 null ./gradlew:app:ConnectedLocalDebugAndroidTest 它运行LocalDebug Variant的所

    • 我在OSX上使用react-native 0.43.3。我试着在Android上运行应用程序并获取消息 ./gradlew installDebug给了我一些错误,并将其全部修复。最后,构建获得成功,应用程序正在Android设备上运行。 但是命令仍然不起作用。只有命令起作用。 使用命令时有什么可以检查的吗? 我不明白它怎么会发生。

    • 所以我有一个使用模块导出的文件,它有4个字段,其中一个执行字段接受2个参数,本质上是一个函数。它不返回任何内容,而是使用discord。js并运行此