SoapuUI.setSoapUICore导致Junit线程结束

问题描述

我有一个在并发模式下运行的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 (将#修改为@)