Команды тестирования 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: core: 3.3.0) Выполнение преобразования IdentityTransform -> IdentityTransform для артефакта protobuf-java.jar (com.google.protobuf: protobuf-java: 2.6.1) Выполнение преобразования IdentityTransform -> IdentityTransform для артефакта backport-util-concurrent.jar (backport-util-concurrent: backport-util-concurrent: 3.1) Выполнение преобразования IdentityTransform -> IdentityTransform для артефактаxercesMinimal.jar (nekohtml: xercesMinimal: 1.9.6.2) Выполнение преобразования IdentityTransform -> IdentityTransform для артефакта nekohtml.jar (nekohtml: nekohtml: 1.9.6.2) Выполнение преобразования платформ MockableJarTransform для файловой системы / файловой системы / файловой системы / od / 28 / sd / 28 и sptandroid.jar Запуск процесса «Испытатель Gradle 2».Рабочий каталог: / home / circleci / code / app Команда: / 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' Успешно запущенный процесс 'Gradle Test Executor 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);mode = binary sdk = 28
com.mindvalley.mva.loginmodule.LoginActivityTest> isSkipLoginVisible SKIPPED
Задача: приложение: testInternalReleaseUnitTest СБОЙ: приложение: testInternalReleaseUnitTest для (поток [: 'Тема 2,5, главная]) завершена.Заняло 3,413 с.
FAILURE: сборка завершилась с исключением.
Что пошло не так: выполнение задачи не выполнено ': app: testInternalReleaseUnitTest'.
Процесс 'Gradle Test Executor 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 = "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;
}
}