diff --git a/src/main/scala/org/scalatestplus/junit5/ScalaTestEngine.scala b/src/main/scala/org/scalatestplus/junit5/ScalaTestEngine.scala
index be48c5f..c8e74f1 100644
--- a/src/main/scala/org/scalatestplus/junit5/ScalaTestEngine.scala
+++ b/src/main/scala/org/scalatestplus/junit5/ScalaTestEngine.scala
@@ -21,11 +21,11 @@ import org.junit.platform.engine.support.descriptor.EngineDescriptor
 import org.junit.platform.engine.support.discovery.SelectorResolver.{Match, Resolution}
 import org.junit.platform.engine.support.discovery.{EngineDiscoveryRequestResolver, SelectorResolver}
 import org.junit.platform.engine.{EngineDiscoveryRequest, ExecutionRequest, TestDescriptor, TestExecutionResult, UniqueId}
-import org.scalatest.{Args, ConfigMap, DynaTags, Filter, ParallelTestExecution, Stopper, Suite, Tracker}
+import org.scalatest.{Args, ConfigMap, DynaTags, Filter, ParallelTestExecution, Stopper, Tracker}
 
 import java.lang.reflect.Modifier
 import java.util.concurrent.atomic.AtomicInteger
-import java.util.{Optional, UUID}
+import java.util.Optional
 import java.util.concurrent.{ExecutorService, Executors, ThreadFactory}
 import java.util.logging.Logger
 import java.util.stream.Collectors
@@ -55,7 +55,7 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
     val engineDesc = new EngineDescriptor(uniqueId, "ScalaTest EngineDescriptor")
 
     if (System.getProperty("org.scalatestplus.junit5.ScalaTestEngine.disabled") != "true") {
-      logger.info("Starting test discovery...")
+      logger.fine("Starting test discovery...")
 
       val alwaysTruePredicate =
         new java.util.function.Predicate[String]() {
@@ -107,7 +107,11 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
               .stream()
               .flatMap(addToParentFunction(context))
               .collect(Collectors.toSet())
-          Resolution.matches(matches)
+          if (matches.isEmpty) {
+            Resolution.unresolved()
+          } else {
+            Resolution.matches(matches)
+          }
         }
 
         override def resolve(selector: PackageSelector, context: SelectorResolver.Context): SelectorResolver.Resolution = {
@@ -116,7 +120,11 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
               .stream()
               .flatMap(addToParentFunction(context))
               .collect(Collectors.toSet())
-          Resolution.matches(matches)
+          if (matches.isEmpty) {
+            Resolution.unresolved()
+          } else {
+            Resolution.matches(matches)
+          }
         }
 
         override def resolve(selector: ModuleSelector, context: SelectorResolver.Context): SelectorResolver.Resolution = {
@@ -125,7 +133,11 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
               .stream()
               .flatMap(addToParentFunction(context))
               .collect(Collectors.toSet())
-          Resolution.matches(matches)
+          if (matches.isEmpty) {
+            Resolution.unresolved()
+          } else {
+            Resolution.matches(matches)
+          }
         }
 
         override def resolve(selector: ClassSelector, context: SelectorResolver.Context): SelectorResolver.Resolution = {
@@ -234,7 +246,7 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
 
       resolver.resolve(discoveryRequest, engineDesc)
 
-      logger.info("Completed test discovery, discovered suite count: " + engineDesc.getChildren.size())
+      logger.config("Completed test discovery, discovered suite count: " + engineDesc.getChildren.size())
     }
 
     engineDesc
@@ -245,7 +257,7 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
    */
   def execute(request: ExecutionRequest): Unit = {
     if (System.getProperty("org.scalatestplus.junit5.ScalaTestEngine.disabled") != "true") {
-      logger.info("Start tests execution...")
+      logger.fine("Start tests execution...")
       val engineDesc = request.getRootTestDescriptor
       val listener = request.getEngineExecutionListener
 
@@ -253,7 +265,7 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
       engineDesc.getChildren.asScala.foreach { testDesc =>
         testDesc match {
           case clzDesc: ScalaTestClassDescriptor =>
-            logger.info("Start execution of suite class " + clzDesc.suiteClass.getName + "...")
+            logger.fine("Start execution of suite class " + clzDesc.suiteClass.getName + "...")
             listener.executionStarted(clzDesc)
             val suiteClass = clzDesc.suiteClass
             val canInstantiate = JUnitHelper.checkForPublicNoArgConstructor(suiteClass) && classOf[org.scalatest.Suite].isAssignableFrom(suiteClass)
@@ -327,7 +339,7 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
 
             listener.executionFinished(clzDesc, TestExecutionResult.successful())
 
-            logger.info("Completed execution of suite class " + clzDesc.suiteClass.getName + ".")
+            logger.config("Completed execution of suite class " + clzDesc.suiteClass.getName + ".")
 
           case otherDesc =>
             // Do nothing for other descriptor, just log it.
@@ -335,7 +347,7 @@ class ScalaTestEngine extends org.junit.platform.engine.TestEngine {
         }
       }
       listener.executionFinished(engineDesc, TestExecutionResult.successful())
-      logger.info("Completed tests execution.")
+      logger.fine("Completed tests execution.")
     }
   }
 }
diff --git a/src/test/scala/org/scalatestplus/junit5/ScalaTestEngineSpec.scala b/src/test/scala/org/scalatestplus/junit5/ScalaTestEngineSpec.scala
new file mode 100644
index 0000000..f179c3e
--- /dev/null
+++ b/src/test/scala/org/scalatestplus/junit5/ScalaTestEngineSpec.scala
@@ -0,0 +1,65 @@
+package org.scalatestplus.junit5
+
+import org.junit.platform.engine.UniqueId
+import org.junit.platform.engine.discovery.ClasspathRootSelector
+import org.junit.platform.engine.discovery.DiscoverySelectors.{selectClasspathRoots, selectPackage}
+import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.request
+import org.scalatest.{BeforeAndAfterAll, funspec}
+import org.scalatestplus.junit5.helpers.HappySuite
+
+import java.nio.file.{Files, Paths}
+import scala.collection.JavaConverters._
+
+class ScalaTestEngineSpec extends funspec.AnyFunSpec with BeforeAndAfterAll {
+  val engine = new ScalaTestEngine
+  var scalaTestEngineProperty: Option[String] = None
+
+  override def beforeAll(): Unit = {
+    scalaTestEngineProperty = Option(System.clearProperty("org.scalatestplus.junit5.ScalaTestEngine.disabled"))
+  }
+
+  override def afterAll(): Unit = {
+    scalaTestEngineProperty.foreach(System.setProperty("org.scalatestplus.junit5.ScalaTestEngine.disabled", _))
+  }
+
+  describe("ScalaTestEngine") {
+    describe("discover method") {
+      it("should discover suites on classpath") {
+        val classPathRoot = classOf[ScalaTestEngineSpec].getProtectionDomain.getCodeSource.getLocation
+        val discoveryRequest = request.selectors(
+          selectClasspathRoots(java.util.Collections.singleton(Paths.get(classPathRoot.toURI)))
+        ).build()
+        val engineDescriptor = engine.discover(discoveryRequest, UniqueId.forEngine(engine.getId()))
+        assert(engineDescriptor.getChildren.asScala.exists(td => td.asInstanceOf[ScalaTestClassDescriptor].suiteClass == classOf[HappySuite]))
+      }
+
+      it("should return unresolved for classpath without any tests") {
+        val emptyPath = Files.createTempDirectory(null)
+        val discoveryRequest = request.selectors(
+          selectClasspathRoots(java.util.Collections.singleton(emptyPath))
+        ).build()
+
+        val engineDescriptor = engine.discover(discoveryRequest, UniqueId.forEngine(engine.getId()))
+        assert(engineDescriptor.getChildren.asScala.isEmpty)
+      }
+
+      it("should discover suites in package") {
+        val discoveryRequest = request.selectors(
+          selectPackage("org.scalatestplus.junit5.helpers")
+        ).build()
+
+        val engineDescriptor = engine.discover(discoveryRequest, UniqueId.forEngine(engine.getId()))
+        assert(engineDescriptor.getChildren.asScala.exists(td => td.asInstanceOf[ScalaTestClassDescriptor].suiteClass == classOf[HappySuite]))
+      }
+
+      it("should return unresolved for package without any tests") {
+        val discoveryRequest = request.selectors(
+          selectPackage("org.scalatestplus.junit5.nonexistant")
+        ).build()
+
+        val engineDescriptor = engine.discover(discoveryRequest, UniqueId.forEngine(engine.getId()))
+        assert(engineDescriptor.getChildren.asScala.isEmpty)
+      }
+    }
+  }
+}