У меня есть многопроектная настройка Gradle
RootProject
|
---- ProjectA
|
---- ProjectB
ProjectA
содержит около 500 юнит-тестов.Из которых 3 терпят неудачу в одном классе MyClass
.
Каждый раз, когда я делаю:
./gradlew :ProjectA:test
, он запускает все 500 юнит-тестов.
Я пытаюсь запустить один неудачный тест внутри MyClass
или, по крайней мере, только тесты, содержащиеся в MyClass
, чтобы сократить время сборки.
Я пытался:
./gradlew -D:MyProject:test.single=MyClass --no-rebuild :MyProject:test
Тем не менее, он все еще продолжает запускать все тесты.
Попытка этого работает
./gradlew :MyProject:test --tests '*MyClass*'
, но все равно занимает много времени, так как кажется, что анализируются имена каждого класса теста, чтобы найтисоответствующее имя.
Попытка
./gradlew :MyProject:test --tests "com.mypackage1.mypackage2.MyClass.testMethod1"
выдает следующую ошибку:
> No tests found for given includes: [**/*SomeTest.class](exclude rules) [com.mypackage1.mypackage2.MyClass.testMethod1](--tests filter)
Чего мне не хватает?Что я делаю не так?
Это простой пример использования, который должен быть совершенно очевиден.
Редактировать 1:
RootProject
build.gradle имеет:
configure(subprojects.findAll {it.name != 'SomeProjToIgnore'}) {
test {
forkEvery 1
//Exclude tests
exclude '**/*SomeTest.class'
}
}
Редактировать 2:
./gradlew :MyProject:test --tests 'MyClass*'
значительно быстрее.(уведомление убрано '*' спереди).Но все же я не знаю, как запустить один тест внутри MyClass
.