- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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 的日志时,这些是日志:
Executing transform IdentityTransform -> IdentityTransform on artifact core.jar (com.google.zxing:core:3.3.0) Executing transform IdentityTransform -> IdentityTransform on artifact protobuf-java.jar (com.google.protobuf:protobuf-java:2.6.1) Executing transform IdentityTransform -> IdentityTransform on artifact backport-util-concurrent.jar (backport-util-concurrent:backport-util-concurrent:3.1) Executing transform IdentityTransform -> IdentityTransform on artifact xercesMinimal.jar (nekohtml:xercesMinimal:1.9.6.2) Executing transform IdentityTransform -> IdentityTransform on artifact nekohtml.jar (nekohtml:nekohtml:1.9.6.2) Executing transform MockableJarTransform on file /opt/android/sdk/platforms/android-28/android.jar Starting process 'Gradle Test Executor 2'. Working directory: /home/circleci/code/app Command: /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Djava.awt.headless=true -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dorg.gradle.native=false -noverify -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant -ea -cp /home/circleci/.gradle/caches/4.10.1/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 2' Successfully started process 'Gradle Test Executor 2'
com.mindvalley.mva.loginmodule.LoginActivityTest > isSkipLoginVisible STANDARD_OUT [Robolectric] com.mindvalley.mva.loginmodule.LoginActivityTest.isSkipLoginVisible: sdk=28; resources=binary Called loadFromPath(/system/framework/framework-res.apk, true); mode=binary sdk=28
com.mindvalley.mva.loginmodule.LoginActivityTest > isSkipLoginVisible SKIPPED
Task :app:testInternalReleaseUnitTest FAILED :app:testInternalReleaseUnitTest (Thread[Task worker for ':' Thread 2,5,main]) completed. Took 3.413 secs.
失败:构建失败,出现异常。
出了什么问题:任务“:app:testInternalReleaseUnitTest”执行失败。
Process 'Gradle Test Executor 2' finished with non-zero exit value 137 This problem might be caused by incorrect test process configuration. Please refer to the test execution section in the user guide at https://docs.gradle.org/4.10.1/userguide/java_plugin.html#sec:test_execution
尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获取 完整的见解。
在 https://help.gradle.org 获得更多帮助
我的登录测试 Activity
@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 答案的链接 Why are my Gradle builds dying with exit-code 137?
谢谢克里斯蒂安·威廉姆斯
关于android - CircleCI ./gradlew 测试命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54513980/
我试图通过将环境变量 (SHORT_HASH) 作为命令 ('echo $CIRCLE_SHA1 | cut -c -7') 运行来将其设置为更短的 github 哈希。 所以,我希望将散列“b1e5
我将在 CircleCI 作业的第一步中生成一个 UID。有没有办法将此值存储为可供后续步骤访问的“管道参数”?另外,有没有办法在作业之间传递此类动态参数? 类似这样的事情 jobs: bui
这简直要了我的命,找不到答案...我只想将当前用户从 root 更改为预先创建的名为“node”的用户,并给定“node:9”基础镜像。 这是我现在拥有的 .circleci/config.yml 文
在 Cicrle 上存储敏感信息(例如签名配置、API key 等)的位置,而不将它们添加到 git。通常我不会将此类文件上传到 git 存储库,但我不知道如何在没有它们的情况下使用 Circle 最
我有一个圆形 CI 环境,我想在其中动态分配上下文以部署到 4 个不同的环境。 理想情况下,我想使用管道参数设置上下文,有什么想法可以实现这一点吗? 我希望如何实现这一目标的示例: parameter
CircleCI 有一个 CIRCLE_BRANCH 环境变量,它告诉您 PR 本身的分支名称。 但我想反过来,我需要 PR 试图合并的分支名称。 最佳答案 您可以简单地通过使用 github api
如果我有一个 .circleci/config.yml文件像这样: version: 2 jobs: build-node8: docker: - image: oresoft
是否可以在另一个作业的上下文中运行另一个作业?我有一些工作有一些共同的步骤,我不想在不同的工作中重复这些步骤。 push-production-image: docker: - image: go
我已经设法创建了一个 CircleCI 构建,它使用 curl 使用他们的 API 触发后续构建。 .我已将此添加到我的 circle.yml : test: override: - mvn t
有办法做到这一点吗? 例如,我目前总是在 Circle.yml 文件中安装特定版本的 docker-compose,但我希望已经通过缓存安装它: - sudo -H pip install -U do
CircleCI 2.0 上是否提供 Android Espresso 的仪器测试?如果是的话,有人可以帮我配置 config.yml 文件吗?我已经尝试了数千次,但没有成功。我可以运行单元测试,但不
我想使用 Open JDK 8 和 9 运行我的 Circle CI 2.0 构建。是否有任何可用的 YAML 示例解释如何使用多个 JDK 版本构建 Java 项目? 目前我正在尝试将新作业 jav
Yarn 没有关于 2.0 安装的文档。 索取文档🙏 这里是 1.0 文档 https://circleci.com/docs/1.0/yarn/ 2.0在哪里? https://circleci.
CircleCi 在代码被推送到 master 时运行,但是 CircleCi 在名为 Version Package Bump 的运行脚本中推送到 master 本身。因此,在第一次构建之后,将运行
在 CircleCI 中,我运行一个应用程序,我想针对它运行测试: test: pre: # run app - ./gradlew bootRun -Dgrails.env=de
基本上我试图跳过构建,如果它不是拉取请求或某个分支,但是如果失败,我似乎无法跳过工作或工作流程的一部分,到目前为止问题是 circleci step halt在我的管道中什么都不做,这里的示例配置:
当我与master合并时,我想使用CircleCI将我的docker镜像推送到Dockerhub。我在其他项目中使用 CircleCI,它更有用并且希望保持一致(并且我计划稍后添加测试)。然而,我所有
我正在使用CircleCI设置持续的部署过程,以Google Container Engine为目标。我正在关注this documentation和this example。 我在这个阶段陷入困境:
有没有办法缓存我从 bundler (使用 bundle 安装)获得的依赖项?我知道我可以在 circle.yml 中使用 cache_dependencies 命令,但我不确定要传递给它的路径是什么
摘自 CircleCI 配置文件: deploy: machine: enabled: true steps: - run: name: AWS EC2 dep
我是一名优秀的程序员,十分优秀!