如何从命令行在jar文件中运行测试类?

时间:2020-07-25 00:43:21

标签: java spring spring-boot junit

我的SpringBoot项目的结构是:

enter image description here

没有主类,我已经将该项目编译为jar文件。

现在,我想在命令行的Send1000EmailsIn24hours文件的屏幕快照jar的最后一行显示的测试类中,运行一个名为“ testEmailSending”的方法。

我之所以要在jar文件中运行此测试,是因为整个项目只是一个测试,但是我认为由于这是一个测试,所以我不应该将代码放在最好使用main类,将其放在测试中。

我不确定这是否正确。我应该只将测试代码放在主类中吗?

1 个答案:

答案 0 :(得分:1)

正如Alexei Kovalev所暗示的那样,您永远不想这样做。
测试代码是测试代码。好的做法是永远不要将其包含在应用程序中,并且默认使用maven / gradle来实现。
使用spring boot时,建议您在框架提供的工具框架内执行测试和集成测试:用@SpringBootTest注释测试可以通过加载spring上下文来实现该目标,就像运行jar一样。
如果除了这些测试之外,您还需要在JAR上执行测试,那么您当然可以这样做。在某种程度上,这可能是有道理的,因为JAR可能具有一些可以测试的包装差异。但是您应该为此编写一些测试。因为打包一个完整的Spring Boot应用程序是一个缓慢的过程,并且还因为您无法从Spring Boot提供的所有测试工具中受益。 总体思路是:

  • 编写集成测试(JUnit作为运行程序就足够了),这些测试未打包在应用程序中,并且调用了组件(通过对api / controller的Web请求)或检查了这些副作用(用于批处理)。
  • 以jar形式运行应用程序
  • 运行集成测试