通过maven运行soapui项目时路径不同

时间:2016-05-26 11:27:51

标签: maven groovy soapui

方案 - :

  1. 我有一个shell脚本,我已存储在目录中。
  2. 目录的路径在SoapUI的全局属性中设置。
  3. 所以我试图通过一个groovy脚本将Shell脚本上传到远程服务器。
  4. 当我直接通过SoapUI运行项目时,逻辑工作正常。
  5. 当我通过maven运行项目时,我收到了一个未找到文件的例外。
  6. 这里是一个groovy脚本,用于将shell脚本从本地上传到远程,groovy脚本正在为shell脚本选择错误的路径错误的本地路径,尽管shell脚本存储路径是在全局属性中设置的。

    这是我的pom文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.zaloni.bedrock</groupId>
    <artifactId>integration-tests</artifactId>
    <packaging>jar</packaging>
    <version>4.2.0-SNAPSHOT</version>
    <name>Integration Tests for Bedrock</name>
    <url>https://wiki.zaloni.net/index.php?title=Bedrock_Test_Automation</url>
    <pluginRepositories>
    <pluginRepository>
    <id>SmartBearPluginRepository</id>
    <url>http://www.soapui.org/repository/maven2/</url>
    </pluginRepository>
    </pluginRepositories>
    <dependencies>
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.12</version>
    </dependency>
    <dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.42</version>
    </dependency>
    <dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
    </dependency>
    </dependencies>
    
    <build>
    <plugins>
    <plugin>
    <groupId>com.smartbear.soapui</groupId>
    <artifactId>soapui-pro-maven-plugin</artifactId>
    <version>4.6.1</version>
    <dependencies>
    <dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.9.9-RC1</version>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
    </dependency>
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.12</version>
    </dependency>
    <dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.42</version>
    </dependency>
    <dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
    </dependency>
    </dependencies>
    <executions>
    <!--add a new execution block with a different id for each new test xml file-->
    <execution>
    <phase>integration-test</phase>
    <id>Bedrock-4-0-soapui-project.xml</id>
    <configuration>
    <projectFile>${pom.basedir}/Project_Names/Bedrock-4-0-soapui-project.xml</projectFile>
    <junitReport>true</junitReport>
    </configuration>
    <goals>
    <goal>test</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </project>
    

    以下是我得到的例外情况。&#39;

     java.io.FileNotFoundException: E:\SoapUI_Work\Bedrock_Automation_RestAPI\ShellScriptLib\PreLog_Execute.sh (The system cannot find the path specified)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
        at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
        at Remote_connection.uploadToRemote(Script1.groovy:82)
        at Remote_connection$uploadToRemote.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at Script1.run(Script1.groovy:33)
        at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:96)
        at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SourceFile:89)
        at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:149)
        at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.runTestStep(AbstractTestCaseRunner.java:239)
        at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runCurrentTestStep(WsdlTestCaseRunner.java:48)
        at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:148)
        at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:43)
        at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:135)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
        13:33:11,003 ERROR [log] Unable to Upload Data To Remote Server : An error occurred at uploadToRemote() : null
    

    行为 - (&#34; E:\ SoapUI_Work \ Bedrock_Automation_RestAPI \ bedrock-qa \ SOAP_UI_FrameWork_SanitySuite \ ShellScriptLib&#34;)已在全局属性中设置,因此Groovy脚本应采用此路径,但需要(&#34; E :\ SoapUI_Work \ Bedrock_Automation_RestAPI / ShellScriptLib&#34;)这个路径所以它基本上会跳过路径中的2个目录。

    Path set in global property -("E:\SoapUI_Work\Bedrock_Automation_RestAPI\bedrock-qa\SOAP_UI_FrameWork_SanitySuite\ShellScriptLib")
    
    Path is picking -("E:\SoapUI_Work\Bedrock_Automation_RestAPI/ShellScriptLib") "
    

    项目中使用的与路径变量相关的脚本

     //Script1
    //=======
    //Get Project Name
     def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
     def projectDir = groovyUtils.projectPath 
     log.info "Project Directory " + projectDir 
    
     def mavenBaseDir = ((new java.io.File(projectDir)).getParentFile().getAbsoluteFile())
     log.info "mavenBaseDir-:$mavenBaseDir" 
    
     //Change the path to get ShellScript Dir( Remote server support only in this way )
    
      ShellScriptDir=new java.io.File(mavenBaseDir,"ShellScriptLib").toString() 
      log.info "Shell Script Dir:"+ShellScriptDir"
    
    //Script2
    //========
    
    
      //get Local_Dir_path where Shell Script exist 
    
      def LocalDir_path = context.expand( '${ShellScriptDir_path}' ) 
      def Remote_Dir_path = "/home/bedrock/Soapui_Automation" 
      Remote_Conn.uploadToRemote(project_IP,
                                 22,
                                 project_SERVER_USER_ID,
                                 project_SERVER_P‌​ASSWORD,
                                 LocalDir_path,
                                 "PreLog_Execute.sh",
                                 Remote_Dir_path)
    

    请解决任何问题。
        感谢

2 个答案:

答案 0 :(得分:0)

是的,它不会。 1.如果它在soapui工作,soapui很高兴找到你提供的路径

然后说到maven,maven无法找到你提供的路径,这意味着你需要指向相对于maven路径的脚本文件

请正确检查pathSeperator,如果路径中有变量,请进行交叉检查

在windows C:\\ some \\ path \\ $ {variableinpath} \\ otherfolder或者C:/ some / path / $ {variableinpath} / otherfolder你需要使用路径

还可以尝试从Windows资源管理器E中访问以下路径:\ SoapUI_Work \ Bedrock_Automation_RestAPI \ ShellScriptLib \

问题

同时检查这个直到&#34; E:\ SoapUI_Work \ Bedrock_Automation_RestAPI&#34;斜线必须是\但不是/

路径正在挑选 - (&#34; E:\ SoapUI_Work \ Bedrock_Automation_RestAPI / ShellScriptLib&#34;)&#34;

我希望这个答案有所帮助,发布你的发现。

答案 1 :(得分:0)

如果异常消息声称没有此类文件或目录,则必须验证指定的是否正确并实际指向系统中存在的文件或目录。