问题描述
我有一个在并发模式下运行的Maven / Junit测试项目。每个测试用例都使用SoapUI API调用一个Web服务:
std::string
经过大量调试,我发现该语句
public void makeWebServiceCall(String testCaseName) {
SoapUI.setSoapUICore( new StandalonesoapUICore(true) );
WsdlProject project = new WsdlProject("mySoapUiProject.xml");
WsdlTestSuite testSuite = project.getTestSuiteByName("myTestSuite");
WsdlTestCase testCase = testSuite.getTestCaseByName(testCaseName);
WsdlTestCaseRunner testCaseRunner = testCase.run(new PropertiesMap(),false);
...
}
通常会导致Junit线程结束调用,而其余的测试用例将由更高版本的线程完成。发生这种情况时,原始线程的资源将无法正确释放,而后来完成代码的线程会对每个中断的线程按顺序执行,因此失去了并发执行的好处。
我无法找到任何有关此SoapUI.setSoapUICore方法的作用或为何可能导致Junit线程退出的文档。我猜想这可能是资源锁定问题,因为setSoapUICore是静态方法。但是我尝试同步soapUI代码,以便一次只能有一个线程执行它,并且问题仍然存在。
因此,我将调用放置在该类的静态初始化程序块中,以使其仅被调用一次:
SoapUI.setSoapUICore( new StandalonesoapUICore(true) );
这似乎已经解决了问题,但是我想知道此方法在做什么,这可能会导致Junit线程结束,因此,如果上述“修复”确实是可行的解决方案。
我正在使用以下资源:
- Maven 3.6.1
- Maven Surefire 3.0.0-M4
- Junit-Jupiter 5.7.0-M1
- Java 13.0.1
- SoapUI 5.5.0
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)