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

Spock用于在Intellij中测试Java

薛修能
2023-03-14

我在开始使用spock测试java代码时遇到了一个问题。运行测试时出现错误:

0 test classes found in package '<default package>'
Process finished with exit code -2
Empty test suite.

我使用Intellij和Maven,将依赖项放入pom文件:

    <?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>myGroup</groupId>
    <artifactId>mySecondArg</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-core</artifactId>
            <version>1.1-groovy-2.4-rc-3</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.4.7</version>
        </dependency>
    </dependencies>
</project>

创建了我的简单类Person:(在java中)

public class Person {
    private String name;
    private String surname;
    private String age;

    public Person(String name, String surname, String age){
        this.name = name;
        this.surname = surname;
        this.age = age;
    }
}

和测试(它是spock类):

class PersonTest {

    def "my Test"(){
        when:
            Person person = new Person(name: name, surname: surname, age: age)
        then:
            person.name == name
            person.surname == surname
            person.age == age
        where:
            name    |   surname |   age
            "AAA"   |   "BBB"   |   22
            "HHH"   |   "CCC"   |   30
            "BBB"   |   "SSS"   |   40
    }
}

我的项目树如下所示:

我试着跟随一些教程,但可能我错过了一些东西。我的项目有什么问题,为什么测试不起作用?

共有2个答案

楚骞尧
2023-03-14

两件事-

>

<!-- Mandatory plugins for using Spock -->
<plugin>
  <!-- The gmavenplus plugin is used to compile Groovy code. To learn more about this plugin, visit https://github.com/groovy/GMavenPlus/wiki -->
  <groupId>org.codehaus.gmavenplus</groupId>
  <artifactId>gmavenplus-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <goals>
        <goal>compile</goal>
        <goal>testCompile</goal>
      </goals>
    </execution>
  </executions>
</plugin>

所有测试都应该扩展spock。lang.Specification也由@Bhushan建议

import spock.lang.Specification

class PersonTest extends Specification {

有用的链接-Spock Official Eaxmple

澹台华晖
2023-03-14

您的测试应该扩展规范

class PersonTest extends Specification {

您正在用Groovy编写测试,因此最佳实践是将它们保存在src/test/groovy中

 类似资料:
  • 我正在尝试使用intellij idea运行单个spock单元测试。 考虑: 在上面的测试中,当我转到测试主体和右上下文菜单时,我得到了两种类型的测试。一个是grails测试,另一个是junit测试。 关于这个问题,公认的答案建议使用jUnit运行程序。但是使用它,代码根本无法编译(可能是因为某些插件和其他类不可用)。 (我不确定,因为这是期望的行为,因为我只是运行一个测试,而不是所有的测试。所以

  • 我正在尝试用Maven/Intellij运行spock测试。但是maven和intellij都没有接受测试类。它肯定会拾取类,但不会在类中执行任何测试。 2)Surefire插件配置正确,因为它会拾取文件进行测试 3)target/test-classs文件夹中生成的测试类 我需要帮助我在这里错过了什么。

  • 我正在将Grails2中的一系列单元测试升级到Grails3,并在使用Spock数据驱动测试格式驱动测试的域测试中遇到问题。 当我执行测试时,因为测试执行没有填充测试中的错误、字段和val引用。如前所述,这个测试适用于Grails2.5.5,所以我怀疑我缺少了Grails3中需要的一些东西。 Edited:我删除了原来在setup()中的mockForConstraints()调用,使其无效。

  • 下面是源代码和测试代码,有人能让我知道我做错了什么吗?似乎根本没有调用dao mock并返回“USA”。我在网上做了一些研究,找不到我做错了什么。 下面是我的Spock测试代码:

  • 编辑: 链接到repo示例:https://gitlab.com/bartekwichowski/spock-too-many

  • 我一直试图在IntelliJ IDEA中创建一个带有Spock测试的Groovy项目。 下面是我遵循的步骤: 创建了Groovy项目并添加了Maven支持。 添加了Spock依赖项和插件。我使用的POM与此非常相似:https://github.com/mariuszs/java-spock-test-sample/blob/master/POM.xml 由于Groovy依赖项冲突,我从模块设置-