无法在Springboot应用程序中执行常规测试文件

问题描述 投票:0回答:1

我创建了一个示例SpringBoot应用程序,用于使用Spock框架编写单元测试。以下是文件。

Calculator.Java

public class Calculator {
   @Autowired
   Addition addition;

   public int calculate(int a, int b, String choice) {
      return addition.add(a, b);
   }
}

我已经使用Junit如下创建测试类,它的工作正常

CalculatorTest.java

@SpringBootTest
public class CalculatorTest {

   @Mock
   Addition addition;

   @InjectMocks
   Calculator cal;

   @Test
   public void testCal() {
     when(addition.add(2, 3)).thenReturn(8);
     int value = cal.calculate(2, 3, "add");
     assertEquals(8, value);
   }
}

但是我需要使用Spock Framework编写单元测试,因此我创建了Groovy文件,并在dependencies中添加了相应的pluginspom.xml。当我运行mvn clean install来构建应用程序时。在TESTS下,我只能看到CalculatorTest.java执行,但看不到CalculatorGroovyTest.groovy文件的执行。

CalculatorGroovyTest.groovy

@SpringBootTest
class CalculatorGroovyTest extends Specification{

   @Mock
   Addition addition;

   @InjectMocks
   Calculator cal;

   def "Callator test method"(){
       given:
           addition.add(5, 8) --> 9;
       when:
           int val = cal.calculate(5, 8, "add");
       then:
           val == 9;
   }
}

下面是我在pom中添加的依赖项和插件。

Dependencies

<dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.3-groovy-2.5</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-guice</artifactId>
        <version>1.0-groovy-2.4</version>
        <scope>test</scope>
    </dependency>

PlugIns

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <useFile>false</useFile>
                <includes>
                    <include>**/*Spec.groovy</include>
                    <include>**/*Test.groovy</include>
                    <include>**/*Test.java</include>
                </includes>
            </configuration>
        </plugin>
        <plugin>
            <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>
            <configuration>
                <testSources>
                    <testSource>
                        <directory>${project.basedir}/src/test/java</directory>
                        <includes>
                            <include>**/*.groovy</include>
                        </includes>
                    </testSource>
                </testSources>
            </configuration>
        </plugin>

NOTE:在进行Maven构建后,我没有收到任何错误并获得了构建成功

我不确定为什么不考虑将groovy文件用于单元测试

spring-boot maven groovy spock spring-boot-test
1个回答
0
投票

似乎您在依赖项中缺少spock-spring

<dependency>
    <groupId>org.spockframework</groupId>
    <artifactId>spock-spring</artifactId>
    <version>1.2-groovy-2.5</version>
    <scope>test</scope>
</dependency>

我在该列表中也没有看到spring-boot-starter-test,请确保它在那里。

© www.soinside.com 2019 - 2024. All rights reserved.