大佬教程收集整理的这篇文章主要介绍了java – 从可执行jar运行spring测试,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些Spring测试可以启动应用程序上下文并测试一些服务.我可以使用Maven和IDE运行这些测试.现在我需要在无法访问Maven的其他机器上运行这些测试.我的想法是创建一个测试jar并通过命令行运行它们.
所以我创建了一个自定义Runner来调用我需要的测试类,这些测试将启动Spring Application上下文并测试一些服务.
以下是示例代码:
我的自定义亚军:
public class Main {
public static void main(String[] args) {
System.out.println("Running tests!");
JUnitCore ENGIne = new JUnitCore();
ENGIne.addListener(new TextListener(System.out));
ENGIne.run(SpringSampleTest.class);
}
}
上面的跑步者正在调用此测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppConfig.class})
public class SpringSampleTest {
@Autowired
Testservice testservice;
@Test
public void testSimple() {
assertTrue("Test Simple",testservice.isValid());
}
}
这是我的配置和服务
@Configuration
@ComponentScan(basePackages = {"mypackage"})
public class AppConfig {
}
@service
public class Testservice {
public Boolean isValid() {
return true;
}
}
所以要从jar运行这些测试,我已经使用assembly-plugin来创建一个包含我所有测试和依赖项的可执行jar(感谢这个答案here).现在,当我运行这个可执行jar时,我的自定义运行器(Main.java)能够触发测试,但是它没有加载Spring Context并且因为我的依赖项没有自动装配而失败并出现NullPointer异常.这是日志:
Running tests!
Sep 05,2018 5:15:01 PM org.springframework.test.context.support.DefaultTESTContextBootstrapper getDefaultTestExecutionListenerClassNames
INFO: Loaded default TestExecutionListener class names from LOCATIOn [@R_404_1979@-INF/spring.factories]: []
Sep 05,2018 5:15:01 PM org.springframework.test.context.support.DefaultTESTContextBootstrapper getTestExecutionListeners
INFO: Using TestExecutionListeners: []
.E
Time: 0.007
There was 1 failure:
1) testSimple(com.c0deattack.cu.runners.SpringSampleTest)
java.lang.NullPointerException
at com.c0deattack.cu.runners.SpringSampleTest.testSimple(SpringSampleTest.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegaTingMethodAccessorImpl.invoke(DelegaTingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallBACks.evaluate(RunBeforeTestMethodCallBACks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallBACks.evaluate(RunAfterTestMethodCallBACks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTESTClassCallBACks.evaluate(RunBeforeTESTClassCallBACks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTESTClassCallBACks.evaluate(RunAfterTESTClassCallBACks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.runner.JUnitCore.run(JUnitCore.java:105)
at org.junit.runner.JUnitCore.run(JUnitCore.java:94)
at com.c0deattack.cu.runners.Main.main(Main.java:15)
@R_445_4895@!!!
Tests run: 1,@R_445_4895@: 1
有人可以指出我做错了什么吗?
的pom.xml
<><><><><><> <><><><> <><><> <><><><> <><>@H_618_80@<><><> <>@H_618_80@ <><> <>@H_618_80@ <>
descriptor – assembly.xml
<> <><> <><><> <>
您可以在github:https://github.com/SaiUpadhyayula/executabletests中查看示例项目
请参阅拉取请求获取附加信息:
以上是大佬教程为你收集整理的java – 从可执行jar运行spring测试全部内容,希望文章能够帮你解决java – 从可执行jar运行spring测试所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。