当我创建Spring Boot Application时,它会生成2个类:
>>> import giturlparse
>>> url = giturlparse.parse('ssh://git@gitlab.com:3333/org/repo.git')
>>> url
Parsed(pathname='/org/repo.git', protocols=['ssh'], protocol='ssh', href='ssh://git@gitlab.com:3333/org/repo.git', resource='gitlab.com', user='git', port='3333', name='repo', owner='org')
>>> url.resource
'gitlab.com'
第二个是测试:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
更新
我像this这样的答案,但它没有给我一个明确的答案。
答案 0 :(得分:5)
实际上,Spring Boot应用程序的main()
方法不包含在单元/集成测试中,因为Spring Boot测试不会调用main()
方法来启动Spring Boot应用程序。
现在我认为这post的所有答案都有点矫枉过正
他们希望添加main()
方法的测试,以使公制工具满意(声纳)
加载Spring上下文并加载应用程序需要时间
不要在每个开发人员构建中添加它只是为了赢得应用程序中大约0.1%的覆盖率
我添加了一个答案。
除了您的简单示例和您引用的其他帖子之外,从绝对意义上说,如果您包含一些逻辑,那么为main()
方法创建测试可能是有意义的。例如,就像您一样将特定参数传递给应用程序,并在main()
meethod。
答案 1 :(得分:3)
留空。如果在加载应用程序上下文时发生异常,则测试将失败。这个测试只是说"我的应用程序是否会加载而不会抛出异常"
您希望保持此测试的原因是,当某些内容失败时,您希望找到根本原因。如果您无法加载应用程序上下文,则可以假设所有其他失败的测试都是由此引起的。如果上述测试通过,您可以假设失败的测试与加载上下文无关。
答案 2 :(得分:0)
当您使用 Spring Initializer 构建 Spring 启动应用程序时。它自动创建应用程序及其测试类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootTest
class ApplicationTest {
@Test
void contextLoads() {
}
}
注意在测试类上使用 @SpringBootTest
注释,它告诉 Spring Boot 查找主配置类(例如带有 @SpringBootApplication 的类)并使用它来启动 Spring 应用程序上下文。 Empty contextLoads()
是用于验证应用程序是否能够成功加载 Spring 上下文的测试。
您不需要为空方法提供任何测试用例。虽然你可以做这样的事情来验证你的控制器或服务 bean 上下文:-
@SpringBootTest
public class ApplicationContextTest {
@Autowired
private MyController myController;
@Autowired
private MyService myService;
@Test
public void contextLoads() throws Exception {
assertThat(myController).isNotNull();
assertThat(myService).isNotNull();
}
}