【发布时间】:2018-01-20 21:26:35
【问题描述】:
我使用带有 Groovy 脚本的 Spock 框架来测试我的 Java 应用程序。对于我创建的所有类,我的项目中有 100% 的测试覆盖率。但是,我注意到覆盖范围显示名为“App”的主类没有经过全面测试。
这是我启动 Spring 应用程序的 App 类:
package com.test.cli;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class App {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
App app = context.getBean(App.class);
app.start();
}
private void start() {
System.out.print("App started ...");
}
}
这是我对 App 类的单一测试:
package com.test.cli
import com.test.cli.App
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.context.ApplicationContext
import spock.lang.Specification
@SpringBootTest(classes = App.class)
class AppSpecIT extends Specification {
@Autowired
ApplicationContext context
def "it should boot Spring application successfully"() {
expect: "application context exists"
context != null
}
}
您可以在此屏幕截图中看到,从 12 到 18 的行没有被覆盖,我想解决这个问题:
如何使用 Spock Framework 全面测试 Spring Boot 应用程序上下文?
【问题讨论】:
-
你能告诉你如何解决这个问题..??面临同样的问题。我是 Spock 和 Spring 的新手,所以无法理解 Leonard 的回答
标签: java spring-boot junit spock applicationcontext