No tests found for given includes Error, when running Parameterized Unit test in Android Studio

235,740

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'.

enter image description here

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()
        }
    }
}
Share:
235,740

Related videos on Youtube

Elye
Author by

Elye

Android Design, Development and Deployment

Updated on July 16, 2022

Comments

  • Elye
    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
    ptkvsk almost 4 years
    But 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
    RenatoIvancic almost 4 years
    As 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
    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
    Serdnad over 3 years
    In Gradle's Kotlin DSL: stackoverflow.com/a/50128729/2330228
  • RedGlyph
    RedGlyph over 3 years
    That'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
    RedGlyph over 3 years
    That's without type-safe accessor, otherwise see solution that had already been given by skryvets (stackoverflow.com/a/58125215/183575)
  • Arnab Mukherjee
    Arnab Mukherjee about 3 years
    Adding reference from another answer, for additional info. link
  • Martin Vysny
    Martin Vysny about 3 years
    Thank you. I was accidentally using junit-platform-engine instead of junit-jupiter-engine which apparently caused this issue.
  • osrl
    osrl almost 3 years
    On Android Arctic Fox, there is no 'Run tests using' option.
  • Rafael
    Rafael almost 3 years
    This seems not enough in my case
  • Alvin Dizon
    Alvin Dizon almost 3 years
    Can you give a more complete example of what you did?
  • MeanwhileInHell
    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
    George Shalvashvili almost 3 years
    I have spent 30 minutes on this thanks to you for saving me one and a half hour!
  • Rhony
    Rhony over 2 years
    I have multimodule project, just kindly forget to add robolectric.properties file inside test/resource folder because i only enabling it for sdk 19 & 29.
  • Eugene
    Eugene over 2 years
    darn, I feel like an idiot right now... thx for this!
  • Swathi
    Swathi over 2 years
    This solution for kotlin DSL works for me . And you need to put that in app/build.gradle.
  • CodeFinity
    CodeFinity over 2 years
    Silly 🙃 that this isn't taken care of when doing a migration from Maven to Gradle with gradle init. Another consideration is the order of test in build.gradle, as in where it appears in the file.
  • Skizo-ozᴉʞS
    Skizo-ozᴉʞS over 2 years
    Works like a charm, thanks ;)
  • artronics
    artronics over 2 years
    For 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
    srijan439 about 2 years
    Thank you so much. I was trying to resolve this for days.
  • YektaDev
    YektaDev about 2 years
    Note that this produces a bug when it's used inside the android target of a Kotlin Multi-platform project.
  • YektaDev
    YektaDev about 2 years
    Note that using useJUnitPlatform() produces a bug when it's used inside the android target of a Kotlin Multi-platform project.
  • O_K
    O_K about 2 years
    Thanks.. I was facing the issue and your solution helped me to fix it.
  • Aman Kumar
    Aman Kumar almost 2 years
    Thanks a lot! This was actually the issue in my case!