No tests found for given includes Error, when running Parameterized Unit test in Android Studio
Solution 1
Add to your build.gradle:
test {
useJUnitPlatform()
}
Solution 2
If you're using JUnit 5+, make sure you import the @Test
annotation from the correct library:
import org.junit.jupiter.api.Test
not
import org.junit.Test
Solution 3
I am using JUnit 4, and what worked for me is changing the IntelliJ settings for 'Gradle -> Run Tests Using' from 'Gradle (default)' to 'IntelliJ IDEA'.
Source of my fix: https://linked2ev.github.io/devsub/2019/09/30/Intellij-junit4-gradle-issue/
Solution 4
To add to already great and easy solution provided by Przemek315, the same config if you use Kotlin DSL:
tasks.test {
useJUnitPlatform()
}
Solution 5
Adding
test {
useJUnitPlatform()
}
to the top level gave me the error "> Could not find method test() for arguments". Instead I had to add it to testOptions
inside the android
block
android {
...
testOptions {
unitTests.all {
useJUnitPlatform()
}
}
}
Related videos on Youtube
![Elye](https://i.stack.imgur.com/yTcB3.png?s=256&g=1)
Comments
-
Elye almost 2 years
I tried run Parameterized Unit Test as below in Android Studio.
import android.test.suitebuilder.annotation.SmallTest; import junit.framework.TestCase; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameter; import org.junit.runners.Parameterized.Parameters; import java.util.Arrays; import java.util.Collection; @RunWith(Parameterized.class) @SmallTest public class FibonacciTest extends TestCase { @Parameters public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { {0, 0}, {1, 1}, {2, 1}, {3, 2}, {4, 3}, {5, 5}, {6, 8} }); } @Parameter // first data value (0) is default public /* NOT private */ int fInput; @Parameter(value = 1) public /* NOT private */ int fExpected; @Test public void test() { assertEquals(fExpected, Fibonacci.calculate(fInput)); } }
The result is error stating No Test Run. However, if I removed the Parameterized, and change them to individual test. It works. Anyone could shed some light why is this not working? Is Parameterized unit test not supported in Android development yet? Thanks!
Below is the error with stack trace.
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:testDebug'. > No tests found for given includes: [com.example.......FibonacciTest] * Try: Run with --info or --debug option to get more log output. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:testDebug'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:310) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68) at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:90) at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:54) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:49) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:71) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) Caused by: org.gradle.api.GradleException: No tests found for given includes: [com.example........FibonacciTest] at org.gradle.api.internal.tasks.testing.NoMatchingTestsReporter.afterSuite(NoMatchingTestsReporter.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:87) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:31) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy46.afterSuite(Unknown Source) at org.gradle.api.internal.tasks.testing.results.TestListenerAdapter.completed(TestListenerAdapter.java:48) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:87) at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:31) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy45.completed(Unknown Source) at org.gradle.api.internal.tasks.testing.results.StateTrackingTestResultProcessor.completed(StateTrackingTestResultProcessor.java:69) at org.gradle.api.internal.tasks.testing.results.AttachParentTestResultProcessor.completed(AttachParentTestResultProcessor.java:52) at org.gradle.api.internal.tasks.testing.processors.TestMainAction.run(TestMainAction.java:51) at org.gradle.api.internal.tasks.testing.detection.DefaultTestExecuter.execute(DefaultTestExecuter.java:75) at org.gradle.api.tasks.testing.Test.executeTests(Test.java:527) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:226) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219) at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:589) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:572) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) ... 57 more BUILD FAILED Total time: 4.153 secs No tests found for given includes: [com.example......FibonacciTest]
-
ptkvsk almost 4 yearsBut why? I have a Spring (not Spring Boot) project where org.junit.Test works just fine. But now I created a Boot project with Initializr and only org.junit.jupiter.api.Test works. Very confusing.
-
RenatoIvancic almost 4 yearsAs a reference from the documentation docs.gradle.org/current/userguide/…. The code above enables JUnit5 Platform to run the tests in your JVM project. Based on the dependencies or configuration the new Jupiter engine will execute those tests or if you need backward compatibility you can inject/configure Vintage (JUnit4) engine will do it.
-
NobodySomewhere over 3 years@logbasex my understanding is that the default IntelliJ setting somehow becomes 'stale', and makes IntelliJ target the wrong testing framework. The original page is in korean so I don't understand it fully.
-
Serdnad over 3 yearsIn Gradle's Kotlin DSL: stackoverflow.com/a/50128729/2330228
-
RedGlyph over 3 yearsThat's "plan B", but Gradle won't rebuild that from scratch. Said otherwise, if you count on Gradle so someone else can use your project, don't do that, or make sure to push the IntelliJ project in your repo, but that defeats the purpose of using Gradle...
-
RedGlyph over 3 yearsThat's without type-safe accessor, otherwise see solution that had already been given by skryvets (stackoverflow.com/a/58125215/183575)
-
Arnab Mukherjee about 3 yearsAdding reference from another answer, for additional info. link
-
Martin Vysny about 3 yearsThank you. I was accidentally using
junit-platform-engine
instead ofjunit-jupiter-engine
which apparently caused this issue. -
osrl almost 3 yearsOn Android Arctic Fox, there is no 'Run tests using' option.
-
Rafael almost 3 yearsThis seems not enough in my case
-
Alvin Dizon almost 3 yearsCan you give a more complete example of what you did?
-
MeanwhileInHell almost 3 years@akubi I would assume changing something like
@Test private void test()
to be@Test public void test()
. However, by simply switching to using JUnit5, this removes the use of access modifiers on tests,@Test void test()
. -
George Shalvashvili almost 3 yearsI have spent 30 minutes on this thanks to you for saving me one and a half hour!
-
Rhony over 2 yearsI have multimodule project, just kindly forget to add
robolectric.properties
file insidetest/resource
folder because i only enabling it for sdk 19 & 29. -
Eugene over 2 yearsdarn, I feel like an idiot right now... thx for this!
-
Swathi over 2 yearsThis solution for kotlin DSL works for me . And you need to put that in app/build.gradle.
-
CodeFinity over 2 yearsSilly 🙃 that this isn't taken care of when doing a migration from Maven to Gradle with
gradle init
. Another consideration is the order oftest
inbuild.gradle
, as in where it appears in the file. -
Skizo-ozᴉʞS over 2 yearsWorks like a charm, thanks ;)
-
artronics over 2 yearsFor me it didn't work until I reloaded gradle project after this change. Open gradle tool window and there is a refresh button on the toolbar.
-
srijan439 about 2 yearsThank you so much. I was trying to resolve this for days.
-
YektaDev about 2 yearsNote that this produces a bug when it's used inside the android target of a Kotlin Multi-platform project.
-
YektaDev about 2 yearsNote that using
useJUnitPlatform()
produces a bug when it's used inside the android target of a Kotlin Multi-platform project. -
O_K about 2 yearsThanks.. I was facing the issue and your solution helped me to fix it.
-
Aman Kumar almost 2 yearsThanks a lot! This was actually the issue in my case!