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