当前位置: 首页 > 知识库问答 >
问题:

在基于Spring boot maven的项目中运行Spock单元测试和TestNG

马才
2023-03-14
 <plugin>
                <groupId>org.codehaus.gmavenplus</groupId>
                <artifactId>gmavenplus-plugin</artifactId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${version.surefire}</version>
                <configuration>
                    <skipTests>false</skipTests>
                    <useFile>false</useFile>
                    <includes>
                        <include>**/*Spec.*</include>
                        <include>**/*Test.java</include>
                    </includes>
                </configuration>

            </plugin>

            <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.0-groovy-2.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency> <!-- enables mocking of classes without default
        constructor (together with CGLIB) -->
        <groupId>org.objenesis</groupId>
        <artifactId>objenesis</artifactId>
        <version>2.1</version>
        <scope>test</scope>
    </dependency>    

我想我在插件中缺少了一些东西,可以让maven在maven lifecycle命令期间运行Spock test和TestNG。我想我错过了一些琐碎的事情。可以有人在这里给我一些关于我应该在pom中添加什么的指针,或者如果有人在github中有一个示例骨架项目,我可以看看。谢了。

共有1个答案

胡玉书
2023-03-14

我能让这个工作。这是我更新的POM。

我有两个问题:

-一个是作为maven测试生命周期的一部分运行TestNG和Groovy测试。这是通过在surefire插件中添加依赖项而实现的。见下文POM。

<plugin>
            <groupId>org.codehaus.gmavenplus</groupId>
            <artifactId>gmavenplus-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <goals>
                        <goal>addTestSources</goal>
                        <goal>testGenerateStubs</goal>
                        <goal>testCompile</goal>
                        <goal>removeTestStubs</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!--<This setting is for intellij bug. This override default location of groovy stubs. for more info
                check this : https://youtrack.jetbrains.com/issue/IDEA-153779>-->
                <stubsOutputDirectory>${project.build.directory}/generated-groovy-stubs</stubsOutputDirectory>
                <testStubsOutputDirectory>${project.build.directory}/generated-groovy-test-stubs</testStubsOutputDirectory>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${version.surefire}</version>
            <configuration>
                <includes>
                    <include>**/*Spec*.groovy</include>
                    <include>**/*Test*.java</include>
                </includes>
                <properties>
                    <property>
                        <name>junit</name>
                        <value>false</value>
                    </property>
                </properties>
                <threadCount>1</threadCount>
            </configuration>
            <!--Below dependency let's surefire play nice with groovy test and testng tests-->
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>${version.surefire}</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-testng</artifactId>
                    <version>${version.surefire}</version>
                </dependency>
            </dependencies>
        </plugin>
 类似资料:
  • 在以前的一个项目中,我使用Spock测试框架对Java代码进行单元测试。我发现这非常有效,所以我尝试将Spock测试添加到我当前的项目中,该项目使用Maven作为构建工具(前一个项目使用Gradle)。虽然我可以让Maven编译我的Spock测试(使用),但我无法让Maven运行这些测试。 我做了一个简单的例子来演示我在两个文件中的问题: null 当我执行(或)时,我希望运行单个单元测试并失败。

  • 我在eclipse中设置了一个“Maven项目”(简单项目),并为其添加了类和单元测试。测试运行良好。 但是,当我在“src/main/java”中添加“module info.java”时,单元测试未能启动: 信息:“workspace2”是我工作区的名称,“unittest”是项目名称。 如果我通过控制台运行maven(相同的maven和java版本),它运行良好。 设置: -eclipse:

  • 尝试设置远程代码欺骗单元测试在PhpStorm中的Yii2项目。 使用SSH,我可以登录到服务器,转到我的Yii2项目的根目录并运行:

  • 我创建了maven项目,它由junit和spock测试组成。两个测试的代码。 在我的本地机器中,当我运行mvn测试时,它会欺骗两个测试类。我在git仓库上部署了项目,并为maven项目配置了jenkins。我推这个项目的存储库和执行作业,但是詹金斯只检测JUnit测试的AppTest类。我已经改变了pom.xml并添加了文件regadring到。我的项目结构。 文件组织的内容。spockframe

  • 我正在使用Spock框架进行测试(1.0-groovy-2.4版本)。Junit提供了使用命令行(使用Maven)运行特定测试的选项: 问题:我怎样才能和斯波克做到这一点? 这个版本依赖于Junit 4.12,Junit文档中指出,只有Junit 4才支持此功能。x、 基本上,斯波克应该提出类似的建议。

  • 我有一个Groovy和Gradle项目在Eclipse开普勒有几个类和一个Spock规范。我可以从shell运行Gradle构建,它工作正常,包括Spock规范。 我现在想尝试在Eclipse中运行Spock规范,无论是否在调试器中。当我运行它时,我看到以下内容: 这是我构建的“依赖项”块。格雷德尔: 我可以在Project Explorer中看到我的Gradle依赖项具有groovy-all-2