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;
}
}
在这里得到答案
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并运行此