我创建了一个示例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
中添加了相应的plugins
和pom.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
文件用于单元测试
似乎您在依赖项中缺少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
,请确保它在那里。