我有一个Maven项目,我使用最有规模的插件来配置scalatest。我使用的是最有规模的3.0.0,但是我无法标记和过滤掉整个套件。
作为参考,我使用了博客标记整个ScalaTest套件(更新为Java 8),但这似乎不适用于Maven。
我创建了一个新的Skip标记,定义如下:
package tags;
import java.lang.annotation.*;
@org.scalatest.TagAnnotation
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Skip {}然后我给我的测试套件贴上这样的标签:
@tags.Skip
class AcceptanceTest extends FeatureSpec { ... 然后,我将我的最大规模的maven插件配置如下:
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<configuration>
<tagsToExclude>tags.Skip</tagsToExclude>
</configuration>
<executions>
<execution>
<id>test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin> 然后运行mvn clean install -X (它正确地将-l标记排除CLI参数传递给Scalatest):
[DEBUG] Forking ScalaTest via: cmd.exe /X /C "java -Dbasedir=mydir
org.scalatest.tools.Runner -R -l tags.Skip ...但是AcceptanceTest套件仍然会被执行。我也试着把这套套房贴上这样的标签,但没有成功:
class AcceptanceTest extends Tag("tags.Skip") with FeatureSpecLike { ... 发布于 2016-10-12 09:05:32
为了分离集成测试的执行,我使用了maven配置文件:
<profiles>
<profile>
<id>default-test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<junitxml>.</junitxml>
<filereports>WDF TestSuite.txt</filereports>
<tagsToExclude>org.example.testkit.annotations.IntegrationTestSuite</tagsToExclude>
</configuration>
<executions>
<execution>
<id>test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>integration-test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<junitxml>.</junitxml>
<filereports>WDF TestSuite.txt</filereports>
<tagsToInclude>org.example.testkit.annotations.IntegrationTestSuite</tagsToInclude>
</configuration>
<executions>
<execution>
<id>test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>然后,我相应地标记了集成测试。
@IntegrationTestSuite
class ExampleTest extends PropSpec with MockitoSugar with BeforeAndAfterAll with EndpointTestHelper {要运行单元测试,我要运行
mvn test用于集成测试
mvn test -Pintegration-testUPD:
package org.example.testkit.annotations;
import org.scalatest.TagAnnotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@TagAnnotation
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface IntegrationTestSuite {}我们使用Scala2.11,scalatest 2.2.6,maven 2,java 8。
发布于 2019-11-14 08:56:03
您可以传递动态需要的标记,而无需创建新的配置文件:
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<executions>
<execution>
<id>test</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<tagsToInclude>${tagsToInclude}</tagsToInclude>
<tagsToExclude>${tagsToExclude}</tagsToExclude>
</configuration>
</execution>
</executions>
</plugin> 一些标签定义示例:
package com.foo.tags;
import org.scalatest.TagAnnotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@TagAnnotation
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Skip {}最后,您可以通过以下方式动态地从CLI传递标记:
mvn -DtagsToExclude=com.foo.tags.Skip testhttps://stackoverflow.com/questions/39993622
复制相似问题