使用jar或war文件运行testng套件

时间:2015-10-05 12:26:22

标签: java selenium-webdriver testng

我使用selenium webdriver和java创建了一个testng测试。现在我不想将我的代码分享给不同的用户,但我想让我的代码由不同的用户使用jar或war文件运行。 任何人都可以帮我解决这个问题。是否可以在不共享testNG java代码的情况下运行测试?

2 个答案:

答案 0 :(得分:0)

我没有机会与maven合作,但也应该可以使用maven

让我通过使用ant

举个例子告诉你这个想法

假设您正在使用ant运行测试,并使用以下build.xml(根据您的需要更改示例文件)文件

<project name="TestNG Demo" default="clean" basedir=".">  

<!-- ========== Initialize Properties =================================== -->
    <property environment="env"/>

    <property name="ws.home" value="${basedir}"/>
    <property name="ws.jars" value="${ws.home}/Jars"/>
    <property name="test.dest" value="${ws.home}/build"/>
    <property name="test.src" value="${ws.home}/src"/>
    <property name="ng.result" value="test-output"/>

    <target name="setClassPath" unless="test.classpath">
        <path id="classpath_jars">
            <fileset dir="${ws.jars}" includes="**/*.jar"/>
            <pathelement path="${ws.jars}"/>
        </path>
        <pathconvert pathsep=":" 
            property="test.classpath" 
            refid="classpath_jars"/>
    </target>

    <target name="init" depends="setClassPath">
        <tstamp>
            <format property="start.time" pattern="MM/dd/yyyy hh:mm aa" />
        </tstamp>
        <condition property="ANT" 
            value="${env.ANT_HOME}/bin/ant.bat" 
            else="${env.ANT_HOME}/bin/ant">
                    <os family="windows" />
        </condition>
        <taskdef name="testng" classpath="${test.classpath}"
               classname="org.testng.TestNGAntTask" />

    </target>

    <!-- all -->
    <target name="all">
    </target>

    <!-- clean -->
    <target name="clean">
        <delete dir="${test.dest}"/>
    </target>

    <!-- compile -->
    <target name="compile" depends="init, clean" > 
        <delete includeemptydirs="true" quiet="true">
            <fileset dir="${test.dest}" includes="**/*"/>
        </delete>
        <echo message="making directory..."/>
        <mkdir dir="${test.dest}"/>
        <echo message="classpath------: ${test.classpath}"/>
        <echo message="compiling..."/>
        <javac 
            includeantruntime="false"
            debug="true" 
            destdir="${test.dest}" 
            srcdir="${test.src}" 
            target="1.6" 
            classpath="${test.classpath}"
        >
        </javac>
      </target>

    <!-- build -->
    <target name="build" depends="init">
    </target>

    <!-- run -->
    <target name="run" >
        <testng classpath="${test.classpath}:${test.dest}" suitename="suite">   
            <xmlfileset dir="${ws.home}" includes="testng.xml"/>
        </testng>
    </target>

    <target name="usage">
        <echo>
            ant run will execute the test
        </echo>
    </target>

    <path id="test.c">
            <fileset dir="${ws.jars}" includes="*.jar"/>
    </path>

      <target name="makexsltreports">
            <mkdir dir="${ws.home}/XSLT_Reports/output"/>

            <xslt in="${ng.result}/testng-results.xml" style="src/demo/testng-results.xsl"
                  out="${ws.home}/XSLT_Reports/output/index.html" classpathref="test.c" processor="SaxonLiaison">
                <param name="testNgXslt.outputDir" expression="${ws.home}/XSLT_Reports/output/"/>
                <param name="testNgXslt.showRuntimeTotals" expression="true"/>
            </xslt>
        </target>

    <!-- ****************** targets not used ****************** -->

</project>

现在在测试编译之后(使用目标ant编译来编译测试),你将获得项目文件夹中build文件夹中的类文件,现在你可以删除src文件夹(你的java文件)并使用ant run来执行测试(使用目标ant运行)来运行你的测试。如果你计划给它你的客户端然后你可以做一个简单的bat(windows)或shellscript(linux)执行命令ant run并点击它测试将运行

希望它可以帮助你......如果你有任何疑问,请回复

答案 1 :(得分:0)

正如@vicky建议的那样,看看Maven,因为它允许你用生产WAR / JAR和打包到测试JAR中的测试来打包你的项目。特别是在test-jar JAR type,您可以使用标记JAR。

所以将它作为插件添加到pom.xml:

<build>
   <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
           <version>2.2</version>

           <executions>
               <execution>
                   <goals>
                       <goal>test-jar</goal>
                   </goals>
               </execution>
           </executions>
       </plugin>
    </plugins>
</build>

然后其他人可以使用以下方式将其作为依赖项:

 <dependency>
<groupId>com.foo</groupId>
<artifactId>bar</artifactId>
<version>1.2.3</version>
<type>test-jar</type>
<scope>test</scope>

此处提供更多信息:How do I install a test-jar in maven?