Попытка заставить ScalaTest работать: «Нет тестов для запуска» при выполнении «mvn test»

Редактировать: я наконец получил его на работу !!!

Нужна была комбинация JUnit в pom.xml и трех операторов в моем .scala:

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])

По какой-то причине при попытке настроить Surefire тесты снова перестают выполняться.

Я пишу в IntelliJ, пытаюсь запустить простой тест ScalaTest через Maven (mvn test) процесс сборки. Ошибок нет, но, к сожалению, тесты тоже не запускаются.

Вот мой файл .scala:

import org.scalatest.FunSuite
import org.scalatest.BeforeAndAfter

class ExampleSuite extends FunSuite with BeforeAndAfter {

  before {
    println("Doing setup tasks...")
  }

  test("Example test of checking the browser title") {

    val expected_title = "Company Platform"
    var actual_title = "Company Platform"
    assert(actual_title == expected_title)
  }

  after {
    println("Doing teardown tasks...")
  }
}

Вот вывод Maven:

[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for JoeTestDemo:JoeTestDemo:jar:1.0
[WARNING] 'build.plugins.plugin.version' for org.scala-tools:maven-scala-plugin is missing. @ line 42, column 21
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building JoeTestDemo 1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ JoeTestDemo ---
[WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ JoeTestDemo ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-scala-plugin:2.15.2:compile (default) @ JoeTestDemo ---
[INFO] Checking for multiple versions of scala
[INFO] includes = [**/*.scala,**/*.java,]
[INFO] excludes = []
[WARNING] No source files found.
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ JoeTestDemo ---
[WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/Joeshaver/Projects/JoeTestDemo/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ JoeTestDemo ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-scala-plugin:2.15.2:testCompile (default) @ JoeTestDemo ---
[INFO] Checking for multiple versions of scala
[INFO] includes = [**/*.scala,**/*.java,]
[INFO] excludes = []
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.7.2:test (default-test) @ JoeTestDemo ---
[INFO] Surefire report directory: /Users/Joeshaver/Projects/JoeTestDemo/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
There are no tests to run.

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.368s
[INFO] Finished at: Tue Oct 23 10:58:30 PDT 2012
[INFO] Final Memory: 6M/81M
[INFO] ------------------------------------------------------------------------

Вот это pom.xml. Я думаю, что мой плагин Maven Scala не может быть правильным:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>JoeTestDemo</groupId>
    <artifactId>JoeTestDemo</artifactId>
    <version>1.0</version>

    <repositories>
        <repository>
            <id>scala-tools.org</id>
            <name>Scala-tools Maven2 Repository</name>
            <url>http://scala-tools.org/repo-releases</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>scala-tools.org</id>
            <name>Scala-tools Maven2 Repository</name>
            <url>http://scala-tools.org/repo-releases</url>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.9.0-1</version>
        </dependency>
        <dependency>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest_2.9.0-1</artifactId>
            <version>1.6.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <sourceDir>src/main/java</sourceDir>
                    <jvmArgs>
                        <jvmArg>-Xms64m</jvmArg>
                        <jvmArg>-Xmx1024m</jvmArg>
                    </jvmArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
 maba24 окт. 2012 г., 09:26
Вам не нужно использовать JUnitRunner, чтобы заставить его работать. Использоватьscalatest-maven-plugin вместо.

Ответы на вопрос(3)

scalatest-maven-plugin запустить ваши тесты Scala.

Также убедитесь, что вы используете<scope>test</scope> для банок нужно только для тестовых целей.

Вот как я определил мойpom.xml для использованияScalaTest:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.stackoverflow</groupId>
    <artifactId>Q13036561</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>${project.artifactId}-${project.version}</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <scala.version>2.9.2</scala.version>
        <scalatest.version>2.0.M4</scalatest.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
        </dependency>
        <dependency>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest_${scala.version}</artifactId>
            <version>${scalatest.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <id>scala-compile</id>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <args>
                                <arg>-make:transitive</arg>
                                <arg>-dependencyfile</arg>
                                <arg>${project.build.directory}/.scala_dependencies</arg>
                            </args>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.7.2</version>
                <executions>
                    <execution>
                        <id>default-test</id>
                        < ! - Disable the default-test by putting it in phase none - >
                        <phase>none</phase>
                    </execution>
                </executions>
            </plugin>
            -->
            <plugin>
                <groupId>org.scalatest</groupId>
                <artifactId>scalatest-maven-plugin</artifactId>
                <version>1.0-M2</version>
                <configuration>
                    <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                    <stdout>W</stdout> <!-- Skip coloring output -->
                </configuration>
                <executions>
                    <execution>
                        <id>scala-test</id>
                        <goals>
                            <goal>test</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Как вы можете видеть, я также добавил раздел, который отключает плагин surefire, если вы действительно не хотите его запускать. Это прокомментировано в приведенном выше pom, но если вы хотите отключить плагин surefire, просто раскомментируйте эту часть.

Я тоже использую IntelliJ, и с этой комбинацией проблем нет вообще. Просто запустите тесты из IntelliJ или с помощьюmvn test, они оба будут работать.

 Pramit12 дек. 2016 г., 23:55
очень краткое решение @maba
 Nicholas18 мая 2013 г., 01:00
+1 за небольшую мелочь за возможность отключить самые масштабные цветовые коды, которые появляются при запуске maven через консоль intellij. (Я так надеюсь, что Google подберет эти ключевые слова! Кажется, это нигде больше не задокументировано)
 Gian Marco Gherardi21 апр. 2013 г., 11:18
+1 заSkip coloring output флаг. Я искал это!
Решение Вопроса

то вам нужно либо аннотировать свой тестовый класс (ы)

@RunWith(classOf[JUnitRunner])

Это потребует от вас наличия JUnit в качестве зависимости. Или вы могли бы использоватьScalaTest Maven Плагин (не использовал это сам, хотя).

 Aaron Shaver23 окт. 2012 г., 20:21
Блейк, понял. Я хотел бы использовать плагин, но я не уверен, как. Нужен ли дополнительный переключатель командной строки для Maven? Или, может быть, просто правильный pom.xml? Я обновлю вопрос с моим pom.xml выше.
 Blake Pettersson23 окт. 2012 г., 22:46
Вы проверили ссылку? Я считаю, что это просто вопрос добавления плагина и привязки его к фазе тестирования. И обязательно добавьте oss.sonatype.org в качестве плагина-репозитория.

Добавление к ответу Блейка, кроме@RunWith(classOf[JUnitRunner]) Вам также может понадобиться установить верный огонь следующим образом:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
    <configuration>
      <includes>
        <include>**/*Suite.class</include>
        <include>**/*Test.class</include>
        <include>**/*Tests.class</include>
        <include>**/*Spec.class</include>
        <include>**/*Specs.class</include>
      </includes>
    </configuration>
  </plugin>

Вот один из моих проектов Maven, который прекрасно тестируется ScalaTest без какого-либо специального плагина:https://github.com/nikita-volkov/sext/

 Aaron Shaver23 окт. 2012 г., 21:40
Я хотел бы попытаться не использовать JUnit. Добавление плагина Surefire не помогло.
 Blake Pettersson23 окт. 2012 г., 22:47
К вашему сведению, использование JUnitRunner также позволит вам запускать тесты из IntelliJ.

Ваш ответ на вопрос