diff --git a/build.sc b/build.sc
index 2dff0e26fc7..a305448c1d4 100644
--- a/build.sc
+++ b/build.sc
@@ -487,7 +487,7 @@ object main extends MillPublicScalaModule with BuildInfo{
     def buildInfoMembers = Seq(BuildInfo.Value("millVersion", millVersion(), "Mill version."))
     def ivyDeps = Agg(Deps.junixsocket)
 
-    object test extends Tests with TestModule.Junit4 {
+    object test extends JavaModuleTests with TestModule.Junit4 {
       def ivyDeps = Agg(Deps.junitInterface, Deps.lambdaTest)
     }
   }
diff --git a/contrib/bloop/test/src/mill/contrib/bloop/BloopTests.scala b/contrib/bloop/test/src/mill/contrib/bloop/BloopTests.scala
index 5685584c5e6..afc2a88b037 100644
--- a/contrib/bloop/test/src/mill/contrib/bloop/BloopTests.scala
+++ b/contrib/bloop/test/src/mill/contrib/bloop/BloopTests.scala
@@ -44,7 +44,7 @@ object BloopTests extends TestSuite {
         ivy"org.postgresql:postgresql:42.3.3"
       )
 
-      object test extends super.Tests with TestModule.Utest
+      object test extends ScalaModuleTests with TestModule.Utest
     }
 
     object scalaModule2 extends scalalib.ScalaModule {
diff --git a/contrib/playlib/src/mill/playlib/PlayModule.scala b/contrib/playlib/src/mill/playlib/PlayModule.scala
index 6b817994ead..c2888544031 100644
--- a/contrib/playlib/src/mill/playlib/PlayModule.scala
+++ b/contrib/playlib/src/mill/playlib/PlayModule.scala
@@ -6,7 +6,7 @@ import mill.scalalib._
 import mill.{Agg, Args, T}
 
 trait PlayApiModule extends Dependencies with Router with Server {
-  trait PlayTests extends super.Tests with TestModule.ScalaTest {
+  trait PlayTests extends ScalaModuleTests with TestModule.ScalaTest {
     override def ivyDeps = T {
       val scalatestPlusPlayVersion = playMinorVersion() match {
         case Versions.PLAY_2_6 => "3.1.3"
diff --git a/contrib/scoverage/src/mill/contrib/scoverage/ScoverageModule.scala b/contrib/scoverage/src/mill/contrib/scoverage/ScoverageModule.scala
index d2c6df66109..802eeed90b1 100644
--- a/contrib/scoverage/src/mill/contrib/scoverage/ScoverageModule.scala
+++ b/contrib/scoverage/src/mill/contrib/scoverage/ScoverageModule.scala
@@ -231,7 +231,7 @@ trait ScoverageModule extends ScalaModule { outer: ScalaModule =>
     override def skipIdea = outer.skipIdea
   }
 
-  trait ScoverageTests extends outer.Tests {
+  trait ScoverageTests extends ScalaModuleTests {
     override def upstreamAssemblyClasspath = T {
       super.upstreamAssemblyClasspath() ++
         resolveDeps(T.task {
diff --git a/contrib/testng/readme.adoc b/contrib/testng/readme.adoc
index 0c1689726e3..8f95ee4462e 100644
--- a/contrib/testng/readme.adoc
+++ b/contrib/testng/readme.adoc
@@ -12,7 +12,7 @@ To use TestNG as test framework, you need to add it to the `TestModule.testFrame
 import mill.scalalib._
 
 object project extends ScalaModule {
-  object test extends Tests {
+  object test extends ScalaModuleTests {
     def testFramework = "mill.testng.TestNGFramework"
     def ivyDeps = super.ivyDeps ++ Agg(
       ivy"com.lihaoyi:mill-contrib-testng:${mill.BuildInfo.millVersion}"
@@ -29,6 +29,6 @@ You can also use the more convenient `TestModule.TestNg` trait.
 import mill.scalalib._
 
 object project extends ScalaModule {
-  object test extends Tests with TestModule.TestNg
+  object test extends ScalaModuleTests with TestModule.TestNg
 }
 ----
diff --git a/contrib/testng/test/src/mill/testng/TestNGTests.scala b/contrib/testng/test/src/mill/testng/TestNGTests.scala
index f11094ba641..da4af6f5519 100644
--- a/contrib/testng/test/src/mill/testng/TestNGTests.scala
+++ b/contrib/testng/test/src/mill/testng/TestNGTests.scala
@@ -15,7 +15,7 @@ object TestNGTests extends TestSuite {
     override def millSourcePath: os.Path =
       TestUtil.getSrcPathBase() / millOuterCtx.enclosing.split('.')
 
-    object test extends super.Tests {
+    object test extends JavaModuleTests {
       def testngClasspath = T {
         millProjectModule(
           "mill-contrib-testng",
diff --git a/docs/modules/ROOT/pages/Library_Dependencies.adoc b/docs/modules/ROOT/pages/Library_Dependencies.adoc
index 284ad67b63c..e0baba3c380 100644
--- a/docs/modules/ROOT/pages/Library_Dependencies.adoc
+++ b/docs/modules/ROOT/pages/Library_Dependencies.adoc
@@ -113,7 +113,7 @@ There is no special test scope in Mill.
 [source,scala]
 ----
 object main extends JavaModule {
-  object test extends Tests {
+  object test extends JavaModuleTests {
     def ivyDeps = Agg(
       ivy"org.qos.logback:logback-classic:1.2.3"
     )
diff --git a/example/basic/1-simple-scala/build.sc b/example/basic/1-simple-scala/build.sc
index 3be43e9ade7..6d0c2e3e0b2 100644
--- a/example/basic/1-simple-scala/build.sc
+++ b/example/basic/1-simple-scala/build.sc
@@ -8,7 +8,7 @@ object foo extends RootModule with ScalaModule {
     ivy"com.lihaoyi::mainargs:0.4.0"
   )
 
-  object test extends Tests {
+  object test extends ScalaModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
     def testFramework = "utest.runner.Framework"
   }
diff --git a/example/basic/3-multi-module/build.sc b/example/basic/3-multi-module/build.sc
index d86096d4de9..43faf48d5b5 100644
--- a/example/basic/3-multi-module/build.sc
+++ b/example/basic/3-multi-module/build.sc
@@ -1,6 +1,6 @@
 import mill._, scalalib._
 
-trait MyModule extends ScalaModule{
+trait MyModule extends ScalaModule {
   def scalaVersion = "2.13.8"
 }
 
@@ -9,7 +9,7 @@ object foo extends MyModule {
   def ivyDeps = Agg(ivy"com.lihaoyi::mainargs:0.4.0")
 }
 
-object bar extends MyModule{
+object bar extends MyModule {
   def ivyDeps = Agg(ivy"com.lihaoyi::scalatags:0.8.2")
 }
 
diff --git a/example/basic/4-builtin-commands/build.sc b/example/basic/4-builtin-commands/build.sc
index 9fcab197d13..af7c1319cd9 100644
--- a/example/basic/4-builtin-commands/build.sc
+++ b/example/basic/4-builtin-commands/build.sc
@@ -2,7 +2,7 @@
 
 import mill._, scalalib._
 
-trait MyModule extends ScalaModule{
+trait MyModule extends ScalaModule {
   def scalaVersion = "2.13.8"
 }
 
@@ -11,7 +11,7 @@ object foo extends MyModule {
   def ivyDeps = Agg(ivy"com.lihaoyi::mainargs:0.4.0")
 }
 
-object bar extends MyModule{
+object bar extends MyModule {
   def ivyDeps = Agg(ivy"com.lihaoyi::scalatags:0.8.2")
 }
 
diff --git a/example/scalabuilds/10-scala-realistic/build.sc b/example/scalabuilds/10-scala-realistic/build.sc
index 2b5e15b259e..d7eebd4a800 100644
--- a/example/scalabuilds/10-scala-realistic/build.sc
+++ b/example/scalabuilds/10-scala-realistic/build.sc
@@ -13,9 +13,9 @@ trait MyModule extends PublishModule {
   )
 }
 
-trait MyScalaModule extends  MyModule with CrossScalaModule{
+trait MyScalaModule extends MyModule with CrossScalaModule {
   def ivyDeps = Agg(ivy"com.lihaoyi::scalatags:0.12.0")
-  object test extends Tests {
+  object test extends ScalaModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
     def testFramework = "utest.runner.Framework"
   }
@@ -27,7 +27,7 @@ object foo extends Cross[FooModule](scalaVersions)
 trait FooModule extends MyScalaModule {
   def moduleDeps = Seq(bar(), qux)
 
-  def generatedSources = T{
+  def generatedSources = T {
     os.write(
       T.dest / "Version.scala",
       s"""package foo
diff --git a/example/scalabuilds/4-nested-modules/build.sc b/example/scalabuilds/4-nested-modules/build.sc
index 06c6cf03e2f..7e20e3e281c 100644
--- a/example/scalabuilds/4-nested-modules/build.sc
+++ b/example/scalabuilds/4-nested-modules/build.sc
@@ -1,6 +1,6 @@
 import mill._, scalalib._
 
-trait MyModule extends ScalaModule{
+trait MyModule extends ScalaModule {
   def scalaVersion = "2.13.8"
   def ivyDeps = Agg(
     ivy"com.lihaoyi::scalatags:0.8.2",
@@ -8,7 +8,7 @@ trait MyModule extends ScalaModule{
   )
 }
 
-object foo extends MyModule{
+object foo extends MyModule {
   def moduleDeps = Seq(bar, qux)
 
   object bar extends MyModule
diff --git a/example/scalabuilds/5-test-suite/build.sc b/example/scalabuilds/5-test-suite/build.sc
index b03440592ee..c392e9ea0ea 100644
--- a/example/scalabuilds/5-test-suite/build.sc
+++ b/example/scalabuilds/5-test-suite/build.sc
@@ -2,7 +2,7 @@ import mill._, scalalib._
 
 object foo extends ScalaModule {
   def scalaVersion = "2.13.8"
-  object test extends Tests {
+  object test extends ScalaModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
     def testFramework = "utest.runner.Framework"
   }
@@ -47,7 +47,7 @@ compiling 1 Scala source...
 object bar extends ScalaModule {
   def scalaVersion = "2.13.8"
 
-  object test extends Tests with TestModule.Utest {
+  object test extends ScalaModuleTests with TestModule.Utest {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
   }
 }
@@ -87,10 +87,10 @@ object bar extends ScalaModule {
 object qux extends ScalaModule {
   def scalaVersion = "2.13.8"
 
-  object test extends Tests with TestModule.Utest {
+  object test extends ScalaModuleTests with TestModule.Utest {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
   }
-  object integration extends Tests with TestModule.Utest {
+  object integration extends ScalaModuleTests with TestModule.Utest {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
   }
 }
diff --git a/example/scalabuilds/8-sbt-compat-modules/build.sc b/example/scalabuilds/8-sbt-compat-modules/build.sc
index 421708573cc..dd005376827 100644
--- a/example/scalabuilds/8-sbt-compat-modules/build.sc
+++ b/example/scalabuilds/8-sbt-compat-modules/build.sc
@@ -2,7 +2,7 @@ import mill._, scalalib._
 
 object foo extends SbtModule {
   def scalaVersion = "2.13.8"
-  object test extends Tests {
+  object test extends SbtModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
     def testFramework = "utest.runner.Framework"
   }
@@ -10,8 +10,8 @@ object foo extends SbtModule {
 
 
 object bar extends Cross[BarModule]("2.12.17", "2.13.8")
-trait BarModule extends CrossSbtModule{
-  object test extends Tests {
+trait BarModule extends CrossSbtModule {
+  object test extends CrossSbtModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
     def testFramework = "utest.runner.Framework"
   }
diff --git a/example/scalabuilds/9-java-modules/build.sc b/example/scalabuilds/9-java-modules/build.sc
index 230a344e98c..1294a6dc51c 100644
--- a/example/scalabuilds/9-java-modules/build.sc
+++ b/example/scalabuilds/9-java-modules/build.sc
@@ -1,7 +1,7 @@
 import mill._, scalalib._
 
 trait MyJavaModule extends JavaModule{
-  object test extends Tests with TestModule.Junit4
+  object test extends JavaModuleTests with TestModule.Junit4
 }
 
 object foo extends MyJavaModule{
diff --git a/example/scalamodule/4-test-deps/build.sc b/example/scalamodule/4-test-deps/build.sc
index 18e2acf5995..da94e1dfa9e 100644
--- a/example/scalamodule/4-test-deps/build.sc
+++ b/example/scalamodule/4-test-deps/build.sc
@@ -15,7 +15,7 @@ object qux extends ScalaModule {
   def scalaVersion = "2.13.8"
   def moduleDeps = Seq(baz)
 
-  object test extends Tests {
+  object test extends ScalaModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
     def testFramework = "utest.runner.Framework"
     def moduleDeps = super.moduleDeps ++ Seq(baz.test)
@@ -26,7 +26,7 @@ object qux extends ScalaModule {
 object baz extends ScalaModule {
   def scalaVersion = "2.13.8"
 
-  object test extends Tests {
+  object test extends ScalaModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.11")
     def testFramework = "utest.runner.Framework"
   }
diff --git a/example/web/1-todo-webapp/build.sc b/example/web/1-todo-webapp/build.sc
index 4d833ab72cc..1bab3bc2508 100644
--- a/example/web/1-todo-webapp/build.sc
+++ b/example/web/1-todo-webapp/build.sc
@@ -1,13 +1,13 @@
 import mill._, scalalib._
 
-object app extends RootModule with ScalaModule{
+object app extends RootModule with ScalaModule {
   def scalaVersion = "2.13.8"
   def ivyDeps = Agg(
     ivy"com.lihaoyi::cask:0.9.1",
     ivy"com.lihaoyi::scalatags:0.12.0"
   )
 
-  object test extends Tests{
+  object test extends ScalaModuleTests {
     def testFramework = "utest.runner.Framework"
 
     def ivyDeps = Agg(
diff --git a/example/web/2-webapp-cache-busting/build.sc b/example/web/2-webapp-cache-busting/build.sc
index 7fdbe4d922c..2ab032250d4 100644
--- a/example/web/2-webapp-cache-busting/build.sc
+++ b/example/web/2-webapp-cache-busting/build.sc
@@ -3,7 +3,7 @@
 import mill._, scalalib._
 import java.util.Arrays
 
-object app extends RootModule with ScalaModule{
+object app extends RootModule with ScalaModule {
   def scalaVersion = "2.13.8"
   def ivyDeps = Agg(
     ivy"com.lihaoyi::cask:0.9.1",
@@ -26,7 +26,7 @@ object app extends RootModule with ScalaModule{
     Seq(PathRef(T.dest))
   }
 
-  object test extends Tests{
+  object test extends ScalaModuleTests {
     def testFramework = "utest.runner.Framework"
     def ivyDeps = Agg(
       ivy"com.lihaoyi::utest::0.7.10",
diff --git a/example/web/3-scalajs-module/build.sc b/example/web/3-scalajs-module/build.sc
index 4351605518b..fe96cf0a8ca 100644
--- a/example/web/3-scalajs-module/build.sc
+++ b/example/web/3-scalajs-module/build.sc
@@ -4,7 +4,7 @@ object foo extends ScalaJSModule {
   def scalaVersion = "2.13.8"
   def scalaJSVersion = "1.13.0"
   def ivyDeps = Agg(ivy"com.lihaoyi::scalatags::0.12.0")
-  object test extends Tests {
+  object test extends ScalaJSModuleTests {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.7.11")
     def testFramework = "utest.runner.Framework"
   }
diff --git a/example/web/4-webapp-scalajs/build.sc b/example/web/4-webapp-scalajs/build.sc
index 58466bb6241..0303bfa2614 100644
--- a/example/web/4-webapp-scalajs/build.sc
+++ b/example/web/4-webapp-scalajs/build.sc
@@ -1,6 +1,6 @@
 import mill._, scalalib._, scalajslib._
 
-object app extends RootModule with ScalaModule{
+object app extends RootModule with ScalaModule {
 
   def scalaVersion = "2.13.8"
   def ivyDeps = Agg(
@@ -8,7 +8,7 @@ object app extends RootModule with ScalaModule{
     ivy"com.lihaoyi::scalatags:0.12.0"
   )
 
-  def resources = T{
+  def resources = T {
     os.makeDir(T.dest / "webapp")
     val jsPath = client.fastLinkJS().dest.path
     // Move main.js[.map]into the proper filesystem position
@@ -18,7 +18,7 @@ object app extends RootModule with ScalaModule{
     super.resources() ++ Seq(PathRef(T.dest))
   }
 
-  object test extends Tests{
+  object test extends ScalaModuleTests {
     def testFramework = "utest.runner.Framework"
 
     def ivyDeps = Agg(
diff --git a/example/web/5-webapp-scalajs-shared/build.sc b/example/web/5-webapp-scalajs-shared/build.sc
index 35830c52809..88e6975dc28 100644
--- a/example/web/5-webapp-scalajs-shared/build.sc
+++ b/example/web/5-webapp-scalajs-shared/build.sc
@@ -1,6 +1,6 @@
 import mill._, scalalib._, scalajslib._
 
-trait AppScalaModule extends ScalaModule{
+trait AppScalaModule extends ScalaModule {
   def scalaVersion = "2.13.8"
 }
 
@@ -8,7 +8,7 @@ trait AppScalaJSModule extends AppScalaModule with ScalaJSModule {
   def scalaJSVersion = "1.13.0"
 }
 
-object app extends RootModule with AppScalaModule{
+object app extends RootModule with AppScalaModule {
   def moduleDeps = Seq(shared.jvm)
   def ivyDeps = Agg(ivy"com.lihaoyi::cask:0.9.1")
 
@@ -20,7 +20,7 @@ object app extends RootModule with AppScalaModule{
     super.resources() ++ Seq(PathRef(T.dest))
   }
 
-  object test extends Tests{
+  object test extends ScalaModuleTests {
     def testFramework = "utest.runner.Framework"
 
     def ivyDeps = Agg(
@@ -29,7 +29,7 @@ object app extends RootModule with AppScalaModule{
     )
   }
 
-  object shared extends Module{
+  object shared extends Module {
     trait SharedModule extends AppScalaModule with PlatformScalaModule {
       def ivyDeps = Agg(
         ivy"com.lihaoyi::scalatags::0.12.0",
diff --git a/example/web/6-cross-version-platform-publishing/build.sc b/example/web/6-cross-version-platform-publishing/build.sc
index ee0e06824a8..d98a490cde0 100644
--- a/example/web/6-cross-version-platform-publishing/build.sc
+++ b/example/web/6-cross-version-platform-publishing/build.sc
@@ -15,11 +15,11 @@ trait FooModule extends Cross.Module[String] {
     )
 
     def ivyDeps = Agg(ivy"com.lihaoyi::scalatags::0.12.0")
+  }
 
-    trait FooTestModule extends Tests {
-      def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.7.11")
-      def testFramework = "utest.runner.Framework"
-    }
+  trait FooTestModule extends TestModule {
+    def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.7.11")
+    def testFramework = "utest.runner.Framework"
   }
 
   trait SharedJS extends Shared with ScalaJSModule {
@@ -28,25 +28,25 @@ trait FooModule extends Cross.Module[String] {
 
   object bar extends Module {
     object jvm extends Shared{
-      object test extends Tests with FooTestModule
+      object test extends ScalaModuleTests with FooTestModule
     }
-    object js extends SharedJS{
-      object test extends Tests with FooTestModule
+    object js extends SharedJS {
+      object test extends ScalaJSModuleTests with FooTestModule
     }
   }
 
-  object qux extends Module{
-    object jvm extends Shared{
+  object qux extends Module {
+    object jvm extends Shared {
       def moduleDeps = Seq(bar.jvm)
       def ivyDeps = super.ivyDeps() ++ Agg(ivy"com.lihaoyi::upickle::3.0.0")
 
-      object test extends Tests with FooTestModule
+      object test extends ScalaModuleTests with FooTestModule
     }
 
     object js extends SharedJS {
       def moduleDeps = Seq(bar.js)
 
-      object test extends Tests with FooTestModule
+      object test extends ScalaJSModuleTests with FooTestModule
     }
   }
 }
diff --git a/example/web/7-cross-platform-version-publishing/build.sc b/example/web/7-cross-platform-version-publishing/build.sc
index 00af5db1e44..a025d64edc3 100644
--- a/example/web/7-cross-platform-version-publishing/build.sc
+++ b/example/web/7-cross-platform-version-publishing/build.sc
@@ -13,11 +13,11 @@ trait Shared extends CrossScalaModule with PlatformScalaModule with PublishModul
   )
 
   def ivyDeps = Agg(ivy"com.lihaoyi::scalatags::0.12.0")
+}
 
-  trait SharedTestModule extends Tests {
-    def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.7.11")
-    def testFramework = "utest.runner.Framework"
-  }
+trait SharedTestModule extends TestModule {
+  def ivyDeps = Agg(ivy"com.lihaoyi::utest::0.7.11")
+  def testFramework = "utest.runner.Framework"
 }
 
 trait SharedJS extends Shared with ScalaJSModule {
@@ -28,30 +28,30 @@ val scalaVersions = Seq("2.13.8", "3.2.2")
 
 object bar extends Module {
   object jvm extends Cross[JvmModule](scalaVersions)
-  trait JvmModule extends Shared{
-    object test extends Tests with SharedTestModule
+  trait JvmModule extends Shared {
+    object test extends ScalaModuleTests with SharedTestModule
   }
 
   object js extends Cross[JsModule](scalaVersions)
-  trait JsModule extends SharedJS{
-    object test extends Tests with SharedTestModule
+  trait JsModule extends SharedJS {
+    object test extends ScalaJSModuleTests with SharedTestModule
   }
 }
 
-object qux extends Module{
+object qux extends Module {
   object jvm extends Cross[JvmModule](scalaVersions)
-  trait JvmModule extends Shared{
+  trait JvmModule extends Shared {
     def moduleDeps = Seq(bar.jvm())
     def ivyDeps = super.ivyDeps() ++ Agg(ivy"com.lihaoyi::upickle::3.0.0")
 
-    object test extends Tests with SharedTestModule
+    object test extends ScalaModuleTests with SharedTestModule
   }
 
   object js extends Cross[JsModule](scalaVersions)
   trait JsModule extends SharedJS {
     def moduleDeps = Seq(bar.js())
 
-    object test extends Tests with SharedTestModule
+    object test extends ScalaJSModuleTests with SharedTestModule
   }
 }
 
diff --git a/integration/feature/bsp-install/repo/build.sc b/integration/feature/bsp-install/repo/build.sc
index f40f1b4e381..bf6f65d67a9 100644
--- a/integration/feature/bsp-install/repo/build.sc
+++ b/integration/feature/bsp-install/repo/build.sc
@@ -4,7 +4,7 @@ import mill.scalalib._
 
 trait HelloBspModule extends ScalaModule {
   def scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???)
-  object test extends super.Tests with TestModule.Utest
+  object test extends ScalaModuleTests with TestModule.Utest
 
   override def generatedSources = T {
     Seq(PathRef(T.ctx().dest / "classes"))
diff --git a/integration/feature/bsp-modules/repo/build.sc b/integration/feature/bsp-modules/repo/build.sc
index f955f88c96d..c6973213563 100644
--- a/integration/feature/bsp-modules/repo/build.sc
+++ b/integration/feature/bsp-modules/repo/build.sc
@@ -7,7 +7,7 @@ import $file.proj3.{build => proj3}
 
 trait HelloBspModule extends ScalaModule {
   def scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???)
-  object test extends super.Tests with TestModule.Utest
+  object test extends ScalaModuleTests with TestModule.Utest
 }
 
 object HelloBsp extends HelloBspModule {
diff --git a/integration/feature/docannotations/repo/build.sc b/integration/feature/docannotations/repo/build.sc
index 3c1e0f288ca..60cd3b9860c 100644
--- a/integration/feature/docannotations/repo/build.sc
+++ b/integration/feature/docannotations/repo/build.sc
@@ -16,7 +16,7 @@ trait JUnitTests extends TestModule.Junit4 {
  * The Core Module Docz!
  */
 object core extends JavaModule {
-  object test extends Tests with JUnitTests
+  object test extends JavaModuleTests with JUnitTests
 
   /**
    * Core Target Docz!
diff --git a/integration/feature/gen-idea/repo/extended/build.sc b/integration/feature/gen-idea/repo/extended/build.sc
index a97df418fe3..eb254c0400a 100644
--- a/integration/feature/gen-idea/repo/extended/build.sc
+++ b/integration/feature/gen-idea/repo/extended/build.sc
@@ -8,7 +8,7 @@ import mill.scalalib.TestModule
 
 trait HelloWorldModule extends scalalib.ScalaModule {
   override def scalaVersion = "2.13.6"
-  object test extends super.Tests with TestModule.Utest
+  object test extends ScalaModuleTests with TestModule.Utest
 
   override def generatedSources = T {
     Seq(PathRef(T.dest / "classes"))
diff --git a/integration/feature/gen-idea/repo/hello-world/build.sc b/integration/feature/gen-idea/repo/hello-world/build.sc
index a679bab417d..a95e0d708c6 100644
--- a/integration/feature/gen-idea/repo/hello-world/build.sc
+++ b/integration/feature/gen-idea/repo/hello-world/build.sc
@@ -5,7 +5,7 @@ import mill.scalalib.{Dep, DepSyntax, TestModule}
 
 trait HelloWorldModule extends scalalib.ScalaModule {
   def scalaVersion = "2.12.5"
-  object test extends super.Tests with TestModule.Utest {
+  object test extends ScalaModuleTests with TestModule.Utest {
     override def compileIvyDeps: Target[Agg[Dep]] = Agg(
       ivy"org.slf4j:jcl-over-slf4j:1.7.25"
     )
diff --git a/integration/thirdparty/acyclic/repo/build.sc b/integration/thirdparty/acyclic/repo/build.sc
index 3081b910b4e..78d69d207e4 100644
--- a/integration/thirdparty/acyclic/repo/build.sc
+++ b/integration/thirdparty/acyclic/repo/build.sc
@@ -22,7 +22,7 @@ trait AcyclicModule extends CrossSbtModule with PublishModule {
   def ivyDeps = Agg(
     ivy"${scalaOrganization()}:scala-compiler:${scalaVersion()}"
   )
-  object test extends Tests with TestModule.Utest {
+  object test extends CrossSbtModuleTests with TestModule.Utest {
     def forkWorkingDir = os.pwd / "target" / "workspace" / "acyclic"
     def ivyDeps = Agg(
       ivy"com.lihaoyi::utest:0.6.0"
diff --git a/integration/thirdparty/ammonite/repo/build.sc b/integration/thirdparty/ammonite/repo/build.sc
index f013b46fc9f..8d9e67e213c 100644
--- a/integration/thirdparty/ammonite/repo/build.sc
+++ b/integration/thirdparty/ammonite/repo/build.sc
@@ -29,7 +29,7 @@ trait AmmInternalModule extends mill.scalalib.CrossSbtModule {
   def scalacOptions = Seq("-P:acyclic:force", "-target:jvm-1.7")
   def compileIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7")
   def scalacPluginIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7")
-  trait Tests extends super.Tests with TestModule.Utest {
+  trait AmmModuleTests extends CrossSbtModuleTests with TestModule.Utest {
     def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.6.0")
     def forkArgs = Seq("-XX:MaxPermSize=2g", "-Xmx4g", "-Dfile.encoding=UTF8")
   }
@@ -78,7 +78,7 @@ object ops extends Cross[OpsModule](binCrossScalaVersions: _*)
 trait OpsModule extends AmmModule {
   def ivyDeps = Agg(ivy"com.lihaoyi::os-lib:0.2.0")
   def scalacOptions = super.scalacOptions().filter(!_.contains("acyclic"))
-  object test extends Tests
+  object test extends AmmModuleTests
 }
 
 object terminal extends Cross[TerminalModule](binCrossScalaVersions: _*)
@@ -91,7 +91,7 @@ trait TerminalModule extends AmmModule {
     ivy"org.scala-lang:scala-reflect:$crossScalaVersion"
   )
 
-  object test extends Tests
+  object test extends AmmModuleTests
 }
 
 object amm extends Cross[MainModule](fullCrossScalaVersions: _*) {
@@ -153,7 +153,7 @@ object amm extends Cross[MainModule](fullCrossScalaVersions: _*) {
       ivy"com.github.scopt::scopt:3.5.0"
     )
 
-    object test extends Tests with AmmDependenciesResourceFileModule {
+    object test extends AmmModuleTests with AmmDependenciesResourceFileModule {
       def crossScalaVersion = ReplModule.this.crossScalaVersion
       def dependencyResourceFileName = "amm-test-dependencies.txt"
       def resources = T.sources {
@@ -217,7 +217,7 @@ class MainModule(val crossScalaVersion: String) extends AmmModule
 
   def dependencyResourceFileName = "amm-dependencies.txt"
 
-  object test extends Tests {
+  object test extends AmmModuleTests {
     def moduleDeps = super.moduleDeps ++ Seq(amm.repl().test)
     def ivyDeps = super.ivyDeps() ++ Agg(
       ivy"com.chuusai::shapeless:2.3.2"
@@ -241,7 +241,7 @@ object shell extends Cross[ShellModule](fullCrossScalaVersions: _*)
 trait ShellModule extends AmmModule {
   def moduleDeps = Seq(ops(), amm())
   def crossFullScalaVersion = true
-  object test extends Tests {
+  object test extends AmmModuleTests {
     def moduleDeps = super.moduleDeps ++ Seq(amm.repl().test)
     def forkEnv = super.forkEnv() ++ Seq(
       "AMMONITE_SHELL" -> shell().jar().path.toString,
@@ -252,7 +252,7 @@ trait ShellModule extends AmmModule {
 object integration extends Cross[IntegrationModule](fullCrossScalaVersions: _*)
 trait IntegrationModule extends AmmInternalModule {
   def moduleDeps = Seq(ops(), amm())
-  object test extends Tests {
+  object test extends AmmModuleTests {
     def forkEnv = super.forkEnv() ++ Seq(
       "AMMONITE_SHELL" -> shell().jar().path.toString,
       "AMMONITE_ASSEMBLY" -> amm().assembly().path.toString
@@ -269,7 +269,7 @@ trait SshdModule extends AmmModule {
     ivy"org.apache.sshd:sshd-core:1.2.0",
     ivy"org.bouncycastle:bcprov-jdk15on:1.56"
   )
-  object test extends Tests {
+  object test extends AmmModuleTests {
     def ivyDeps = super.ivyDeps() ++ Agg(
       // slf4j-nop makes sshd server use logger that writes into the void
       ivy"org.slf4j:slf4j-nop:1.7.12",
diff --git a/integration/thirdparty/caffeine/repo/build.sc b/integration/thirdparty/caffeine/repo/build.sc
index 7211b1880a9..65b5d51b466 100644
--- a/integration/thirdparty/caffeine/repo/build.sc
+++ b/integration/thirdparty/caffeine/repo/build.sc
@@ -25,7 +25,7 @@ trait CaffeineModule extends MavenModule {
       MavenRepository("http://repo.spring.io/plugins-release")
     )
   }
-  trait Tests extends super.Tests with TestModule.Junit4 {
+  trait CaffeineModuleTests extends JavaModuleTests with TestModule.Junit4 {
     def ivyDeps = super.ivyDeps() ++ Agg(
       libraries.guava,
       testLibraries.mockito,
@@ -77,7 +77,7 @@ object caffeine extends CaffeineModule {
     )
   }
 
-  object test extends Tests with TestModule.TestNg {
+  object test extends CaffeineModuleTests with TestModule.TestNg {
     def ivyDeps = super.ivyDeps() ++ Agg(
       libraries.ycsb,
       libraries.fastutil,
@@ -96,7 +96,7 @@ object caffeine extends CaffeineModule {
 object guava extends CaffeineModule {
   def moduleDeps = Seq(caffeine)
   def ivyDeps = Agg(libraries.guava)
-  object test extends Tests {
+  object test extends CaffeineModuleTests {
     def ivyDeps = super.ivyDeps() ++ Agg(
       testLibraries.junit,
       testLibraries.truth,
@@ -116,7 +116,7 @@ object guava extends CaffeineModule {
 object jcache extends CaffeineModule {
   def moduleDeps = Seq(caffeine)
   def ivyDeps = Agg(libraries.jcache, libraries.config, libraries.jsr330)
-  object test extends Tests {
+  object test extends CaffeineModuleTests {
     def ivyDeps = super.ivyDeps() ++ Agg(
       testLibraries.junit,
       testLibraries.jcacheTck,
@@ -150,7 +150,7 @@ object simulator extends CaffeineModule {
     benchmarkLibraries.expiringMap,
     benchmarkLibraries.elasticSearch
   )
-  object test extends Tests {
+  object test extends CaffeineModuleTests {
 
     def ivyDeps = super.ivyDeps() ++ testLibraries.testng
   }
diff --git a/integration/thirdparty/jawn/repo/build.sc b/integration/thirdparty/jawn/repo/build.sc
index 079dfc74b4c..330957e834f 100644
--- a/integration/thirdparty/jawn/repo/build.sc
+++ b/integration/thirdparty/jawn/repo/build.sc
@@ -1,23 +1,23 @@
 import mill.scalalib
 import mill.Cross
 import mill.scalalib.api.ZincWorkerUtil
-import mill.scalalib.{Dep, DepSyntax, Lib, TestModule}
+import mill.scalalib.{Dep, DepSyntax, TestModule}
 
 val scala212Version = "2.12.3"
 
 object jawn extends Cross[JawnModule]("2.10.6", "2.11.11", scala212Version)
-class JawnModule(crossVersion: String) extends mill.Module {
+trait JawnModule extends cross.Module[String] {
   override def millSourcePath = super.millSourcePath / os.up
 
   trait JawnModule extends scalalib.SbtModule {
-    def scalaVersion = crossVersion
+    def scalaVersion = crossValue
     def scalacOptions = Seq(
       "-deprecation",
       "-optimize",
       "-unchecked"
     )
     def testModuleDeps: Seq[TestModule] = Nil
-    object test extends Tests with TestModule.ScalaTest {
+    object test extends SbtModuleTests with TestModule.ScalaTest {
       def moduleDeps = super.moduleDeps ++ testModuleDeps
       def ivyDeps = Agg(
         ivy"org.scalatest::scalatest:3.0.3",
diff --git a/integration/thirdparty/upickle/repo/build.sc b/integration/thirdparty/upickle/repo/build.sc
index 9ace8acd0fb..16374ecbdc0 100644
--- a/integration/thirdparty/upickle/repo/build.sc
+++ b/integration/thirdparty/upickle/repo/build.sc
@@ -115,7 +115,7 @@ class UpickleJvmModule(val crossScalaVersion: String) extends UpickleModule {
   def ivyDeps = T {
     super.ivyDeps() ++ Seq(ivy"org.spire-math::jawn-parser:0.11.0")
   }
-  object test extends Tests with UpickleTestModule {
+  object test extends CrossSbtModuleTests with UpickleTestModule {
     def platformSegment = "js"
     def millSourcePath = build.millSourcePath / "upickle"
   }
@@ -133,7 +133,7 @@ class UpickleJsModule(val crossScalaVersion: String) extends UpickleModule with
       s"-P:scalajs:mapSourceURI:$a->$g/v${publishVersion()}/"
     })
   }
-  object test extends Tests with UpickleTestModule {
+  object test extends ScalaJSModuleTests with UpickleTestModule {
     def platformSegment = "js"
     def millSourcePath = build.millSourcePath / "upickle"
   }
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
index d08a05605f7..79c214b577f 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
@@ -19,8 +19,6 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
 
   def scalaJSVersion: T[String]
 
-  trait Tests extends ScalaJSModuleTests
-
   trait ScalaJSModuleTests extends ScalaModuleTests with TestScalaJSModule {
     override def scalaJSVersion = outer.scalaJSVersion()
     override def moduleKind = outer.moduleKind()
diff --git a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala
index 50ae3bc5265..ab5acf9980f 100644
--- a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala
+++ b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala
@@ -53,7 +53,7 @@ object HelloJSWorldTests extends TestSuite {
 
     object buildUTest extends Cross[BuildModuleUtest](matrix)
     trait BuildModuleUtest extends RootModule {
-      object test extends super.Tests with TestModule.Utest {
+      object test extends ScalaJSModuleTests with TestModule.Utest {
         override def sources = T.sources { millSourcePath / "src" / "utest" }
         val utestVersion = if (ZincWorkerUtil.isScala3(crossScalaVersion)) "0.7.7" else "0.7.5"
         override def ivyDeps = Agg(
@@ -64,7 +64,7 @@ object HelloJSWorldTests extends TestSuite {
 
     object buildScalaTest extends Cross[BuildModuleScalaTest](matrix)
     trait BuildModuleScalaTest extends RootModule {
-      object test extends super.Tests with TestModule.ScalaTest {
+      object test extends ScalaJSModuleTests with TestModule.ScalaTest {
         override def sources = T.sources { millSourcePath / "src" / "scalatest" }
         override def ivyDeps = Agg(
           ivy"org.scalatest::scalatest::3.1.2"
@@ -79,7 +79,7 @@ object HelloJSWorldTests extends TestSuite {
       def scalaOrganization = "org.example"
       def scalaVersion = scala
       def scalaJSVersion = scalaJS
-      object test extends Tests with TestModule.Utest
+      object test extends ScalaJSModuleTests with TestModule.Utest
     }
 
     override lazy val millDiscover = Discover[this.type]
diff --git a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala b/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala
index 265204e8c36..2b23f783bcd 100644
--- a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala
+++ b/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala
@@ -21,7 +21,7 @@ object MultiModuleTests extends TestSuite {
       override def millSourcePath = workspacePath / "client"
       override def moduleDeps = Seq(shared)
       override def mainClass = Some("Main")
-      object test extends Tests with TestModule.Utest {
+      object test extends ScalaJSModuleTests with TestModule.Utest {
         override def ivyDeps =
           Agg(ivy"com.lihaoyi::utest::${sys.props.getOrElse("TEST_UTEST_VERSION", ???)}")
       }
diff --git a/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala b/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala
index 34f3c77b685..7ffef04ad0a 100644
--- a/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala
+++ b/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala
@@ -46,7 +46,7 @@ object NodeJSConfigTests extends TestSuite {
 
     object buildUTest extends Cross[BuildModuleUtest](matrix)
     trait BuildModuleUtest extends RootModule {
-      object test extends super.Tests with TestModule.Utest {
+      object test extends ScalaJSModuleTests with TestModule.Utest {
         override def sources = T.sources { millSourcePath / "src" / "utest" }
         override def ivyDeps = Agg(
           ivy"com.lihaoyi::utest::$utestVersion"
diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/mill/scalalib/JavaModule.scala
index 13e5593c86d..c36603f74eb 100644
--- a/scalalib/src/mill/scalalib/JavaModule.scala
+++ b/scalalib/src/mill/scalalib/JavaModule.scala
@@ -49,8 +49,6 @@ trait JavaModule
     }
   }
 
-  trait Tests extends JavaModuleTests
-
   def defaultCommandName(): String = "run"
   def resolvePublishDependency: Task[Dep => publish.Dependency] = T.task {
     Artifact.fromDepJava(_: Dep)
diff --git a/scalalib/src/mill/scalalib/MavenModule.scala b/scalalib/src/mill/scalalib/MavenModule.scala
index c931780aec0..55c71301ff1 100644
--- a/scalalib/src/mill/scalalib/MavenModule.scala
+++ b/scalalib/src/mill/scalalib/MavenModule.scala
@@ -27,5 +27,4 @@ trait MavenModule extends JavaModule { outer =>
       millSourcePath / "src" / "test" / "resources"
     }
   }
-  trait Tests extends MavenModuleTests
 }
diff --git a/scalalib/src/mill/scalalib/SbtModule.scala b/scalalib/src/mill/scalalib/SbtModule.scala
index e3900c145de..43964c98ed2 100644
--- a/scalalib/src/mill/scalalib/SbtModule.scala
+++ b/scalalib/src/mill/scalalib/SbtModule.scala
@@ -18,5 +18,4 @@ trait SbtModule extends ScalaModule with MavenModule {
       millSourcePath / "src" / "test" / "java"
     )
   }
-  trait Tests extends SbtModuleTests
 }
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala
index 4fd2f5b801c..d54c1c795f7 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/mill/scalalib/ScalaModule.scala
@@ -28,8 +28,6 @@ trait ScalaModule extends JavaModule with TestModule.ScalaModuleBase { outer =>
     override def mandatoryScalacOptions: Target[Seq[String]] = outer.mandatoryScalacOptions()
   }
 
-  trait Tests extends ScalaModuleTests
-
   /**
    * What Scala organization to use
    *
diff --git a/scalalib/test/src/mill/scalalib/HelloJavaTests.scala b/scalalib/test/src/mill/scalalib/HelloJavaTests.scala
index a568e30208a..fdff2bb81d0 100644
--- a/scalalib/test/src/mill/scalalib/HelloJavaTests.scala
+++ b/scalalib/test/src/mill/scalalib/HelloJavaTests.scala
@@ -14,13 +14,13 @@ object HelloJavaTests extends TestSuite {
 
     object core extends JavaModule {
       override def docJarUseArgsFile = false
-      object test extends Tests with TestModule.Junit4
+      object test extends JavaModuleTests with TestModule.Junit4
     }
     object app extends JavaModule {
       override def docJarUseArgsFile = true
       override def moduleDeps = Seq(core)
-      object test extends Tests with TestModule.Junit4
-      object testJunit5 extends Tests with TestModule.Junit5 {
+      object test extends JavaModuleTests with TestModule.Junit4
+      object testJunit5 extends JavaModuleTests with TestModule.Junit5 {
         override def ivyDeps: T[Agg[Dep]] = T {
           super.ivyDeps() ++ Agg(ivy"org.junit.jupiter:junit-jupiter-params:5.7.0")
         }
diff --git a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
index d51ed75c114..d190221d6ef 100644
--- a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
+++ b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
@@ -287,7 +287,7 @@ object HelloWorldTests extends TestSuite {
   object HelloScalacheck extends HelloBase {
     object foo extends ScalaModule {
       def scalaVersion = scala212Version
-      object test extends Tests {
+      object test extends ScalaModuleTests {
         override def ivyDeps = Agg(ivy"org.scalacheck::scalacheck:1.13.5")
         override def testFramework = "org.scalacheck.ScalaCheckFramework"
       }
diff --git a/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala b/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala
index 4436689878f..0c3b3e67680 100644
--- a/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala
+++ b/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala
@@ -14,7 +14,7 @@ object ScalaVersionsRangesTests extends TestSuite {
     object core extends Cross[CoreCrossModule]("2.11.12", "2.12.13", "2.13.5", "3.0.0-RC2")
     trait CoreCrossModule extends CrossScalaModule
         with CrossScalaVersionRanges {
-      object test extends Tests with TestModule.Utest {
+      object test extends ScalaModuleTests with TestModule.Utest {
         def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.7.8")
       }
     }
diff --git a/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala b/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala
index 863aa1642ed..05344a5dcc9 100644
--- a/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala
+++ b/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala
@@ -15,7 +15,7 @@ object TestClassLoaderTests extends TestSuite {
 
     def scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???)
 
-    object test extends super.Tests with TestModule.Utest {
+    object test extends ScalaModuleTests with TestModule.Utest {
       override def ivyDeps = T {
         super.ivyDeps() ++ Agg(
           ivy"com.lihaoyi::utest:${sys.props.getOrElse("TEST_UTEST_VERSION", ???)}"
diff --git a/scalalib/test/src/mill/scalalib/TestRunnerTests.scala b/scalalib/test/src/mill/scalalib/TestRunnerTests.scala
index d54abe091ce..5f7b22d60f7 100644
--- a/scalalib/test/src/mill/scalalib/TestRunnerTests.scala
+++ b/scalalib/test/src/mill/scalalib/TestRunnerTests.scala
@@ -15,7 +15,7 @@ object TestRunnerTests extends TestSuite {
 
     def scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???)
 
-    object test extends super.Tests with TestModule.Utest {
+    object test extends ScalaModuleTests with TestModule.Utest {
       override def ivyDeps = T {
         super.ivyDeps() ++ Agg(
           ivy"com.lihaoyi::utest:${sys.props.getOrElse("TEST_UTEST_VERSION", ???)}"
diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala
index 4e3ecaff850..2d90305a315 100644
--- a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala
+++ b/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala
@@ -31,8 +31,6 @@ trait ScalaNativeModule extends ScalaModule { outer =>
   def scalaNativeVersion: T[String]
   override def platformSuffix = s"_native${scalaNativeBinaryVersion()}"
 
-  trait Tests extends ScalaNativeModuleTests
-
   trait ScalaNativeModuleTests extends ScalaModuleTests with TestScalaNativeModule {
     override def scalaNativeVersion = outer.scalaNativeVersion()
     override def releaseMode = T { outer.releaseMode() }
diff --git a/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala b/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala
index 1019ddcec35..3bc1c54d85f 100644
--- a/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala
+++ b/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala
@@ -61,7 +61,7 @@ object HelloNativeWorldTests extends TestSuite {
     }
     object buildUTest extends Cross[BuildModuleUtest](matrix)
     trait BuildModuleUtest extends RootModule {
-      object test extends super.Tests with TestModule.Utest {
+      object test extends ScalaNativeModuleTests with TestModule.Utest {
         override def sources = T.sources { millSourcePath / "src" / "utest" }
         override def ivyDeps = super.ivyDeps() ++ Agg(
           ivy"com.lihaoyi::utest::0.7.6"
@@ -74,7 +74,7 @@ object HelloNativeWorldTests extends TestSuite {
       def scalaOrganization = "org.example"
       def scalaVersion = scala
       def scalaNativeVersion = scalaNative
-      object test extends Tests with TestModule.Utest
+      object test extends ScalaNativeModuleTests with TestModule.Utest
     }
 
     override lazy val millDiscover: Discover[HelloNativeWorld.this.type] = Discover[this.type]