Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SoapuUI.setSoapUICore导致Junit线程结束_Java_Multithreading_Soapui_Junit5_Junit Jupiter - Fatal编程技术网

Java SoapuUI.setSoapUICore导致Junit线程结束

Java SoapuUI.setSoapUICore导致Junit线程结束,java,multithreading,soapui,junit5,junit-jupiter,Java,Multithreading,Soapui,Junit5,Junit Jupiter,我有一个Maven/Junit测试项目,我正在并发模式下运行。每个测试用例使用SoapUI API调用一个web服务: public void makeWebServiceCall(字符串testCaseName){ SoapUI.setSoapUICore(新标准soapuicore(真实)); WsdlProject=newwsdlproject(“mySoapUiProject.xml”); WsdlTestSuite testSuite=project.getTestSuiteByNam

我有一个Maven/Junit测试项目,我正在并发模式下运行。每个测试用例使用SoapUI API调用一个web服务:

public void makeWebServiceCall(字符串testCaseName){
SoapUI.setSoapUICore(新标准soapuicore(真实));
WsdlProject=newwsdlproject(“mySoapUiProject.xml”);
WsdlTestSuite testSuite=project.getTestSuiteByName(“myTestSuite”);
WsdlTestCase testCase=testSuite.getTestCaseByName(testCaseName);
WsdlTestCaseRunner testCaseRunner=testCase.run(新属性映射(),false);
...
}
经过多次调试,我发现

SoapUI.setSoapUICore( new StandaloneSoapUICore(true) );
通常会导致Junit线程结束调用,测试用例的其余部分由后面的线程完成。当这种情况发生时,原始线程的资源不会被正确释放,而完成代码的后一个线程会对每个中断的线程按顺序释放,因此并发执行的好处就失去了

我还没有找到关于这个SoapUI.setSoapUICore方法的功能以及它可能导致Junit线程退出的原因的任何文档。我猜这可能是一个资源锁定问题,因为setSoapUICore是一个静态方法。但是我尝试了同步soapUI代码,这样一次只有一个线程可以执行它,而问题仍然存在

因此,我将调用放在类的静态初始值设定项块中,以便只调用一次:

静态{
SoapUI.setSoapUICore(新标准soapuicore(真实));
}
这似乎解决了这个问题,但我想知道这个方法在做什么,可能导致Junit线程终止,因此,如果上面的“修复”确实是一个可行的解决方案

我正在使用以下资源:

  • Maven 3.6.1
  • Maven Surefire 3.0.0-M4
  • Junit Jupiter 5.7.0-M1
  • Java 13.0.1
  • SOAPUI5.5.0

您尝试过该网站吗?是的,我尝试过SoapUI网站。那里的API文档完全没有任何信息——只列出方法/字段等。也没有找到任何关于API的像样教程。我能找到的大多数SoapUI教程都是关于使用GUI界面的。你试着问了吗?还没有。如果你在别处找到一个解决方案,那么考虑一下。你尝试过这个网站吗?是的,我已经尝试过SoaPUI网站。那里的API文档完全没有任何信息——只列出方法/字段等。也没有找到任何关于API的像样教程。我能找到的大多数SoapUI教程都是关于使用GUI界面的。你试着问了吗?还没有。试试看。如果你在别处找到解决方案,那么考虑一下。