How to compile tests with SBT without running them

ScalaSbtBuild Tools

Scala Problem Overview


Is there a way to build tests with SBT without running them?

My own use case is to run static analysis on the test code by using a scalac plugin. Another possible use case is to run some or all of the test code using a separate runner than the one built into SBT.

Ideally there would be a solution to this problem that applies to any SBT project. For example, Maven has a test-compile command that can be used just to compile the tests without running them. It would be great if SBT had the same thing.

Less ideal, but still very helpful, would be solutions that involve modifying the project's build files.

Scala Solutions


Solution 1 - Scala

Just use the test:compile command.

Solution 2 - Scala

test:compile works for compiling your unit tests.

To compile integration tests you can use it:compile.

Another hint to continuously compile on every file change: ~test:compile

Solution 3 - Scala

We have a build.sbt file that is used for multiple projects. Doing sbt test:compile compiled the tests for every single project and took over 30 minutes.

I found out I can compile only the tests for a specific project named xyz by doing:

sbt xyz/test:compile

Solution 4 - Scala

Using sbt version 1.5.0 and higher test:compile returns deprecation warning.

Use Test / compile.

(docs)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1809090View Question on Stackoverflow
Solution 1 - ScalaGuillaume MasséView Answer on Stackoverflow
Solution 2 - ScalaBrendan MaguireView Answer on Stackoverflow
Solution 3 - ScalapacoverflowView Answer on Stackoverflow
Solution 4 - Scalaibanezn04View Answer on Stackoverflow