заблокирован при написании юнит-тестов для докладчика, которому вставлен BoxStore - PullRequest
0 голосов
/ 15 октября 2019

Итак, вот обзор моего проекта: модуль A содержит: - все данные boxstore - макет boxstore для модульных тестов в модуле A

модуль B содержит: - презентатор, в который вставлен BoxStore - PresenterTest необходимо смоделироватьBoxStore

Следовал по этой ссылке , чтобы смоделировать BoxStore, и он прекрасно работает, когда я писал модульные тесты в модуле A. Когда дело доходит до создания макета в модуле BI, возникает NoClassDefFoundError, которую я понимаю, начиная с модуля Bтесты не знают о тестовых объектах модуля А.

Итак, я выполнил следующие сценарии:

  1. Добавлено в градл модуля B:

sourceSets {test.java.srcDirs + = [etc ...]}

Чтобы модуль B знал о фиктивных объектах модуля A.

Дублируйте макет BoxStore в модуле B и используйте его в тестах, но BoxStore генерирует файл Java в папке сборки, и из-за этого я не могу создать свой макет, поскольку все зависит от MyObjectBox для создания BoxStore.

Оба метода потерпели неудачу: (

Любые идеи о том, как я могу разблокировать себя?

1 Ответ

0 голосов
/ 15 октября 2019

Если вы используете Gradle, взгляните на плагин java-test-fixtures, который был представлен в Gradle 5.6.2. В нем представлен новый исходный набор testFixtures, в который можно поместить различные тестовые данные для конкретного модуля и новый DSL, который позволяет другим модулям ссылаться на эти данные в своих тестах. В вашем случае, я полагаю, вы поместили бы тестовые данные в каталог testFixtures модуля A и сослались на него из модуля B:

// module A
dependencies {
  testImplementation(testFixtures(project(":module-B")))
}
...