【TestNG测试】TestNG、Maven、testng.xml构建测试工程
创建一个maven工程
使用Idea创建maven工程

建立类似如上的工程结构,src/main/java,src/test/java,pom.xml,testng.xml,这里由于我们使用工程是用来进行自动化测试的,所以实际这里src/main/java是用不到的,只是IDEA统一规则建立了而已。这里个人还建立了一个bin目录,用来存放chromedriver等浏览器执行文件,用来匹配不同的操作系统及不同的浏览器版本。
pom.xml中的内容
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>com.wilmar.test</groupId>
8 <artifactId>woodpecker</artifactId>
9 <version>1.0-SNAPSHOT</version>
10 <!--<packaging>jar</packaging>-->
11
12 <dependencies>
13 <dependency>
14 <groupId>org.testng</groupId>
15 <artifactId>testng</artifactId>
16 <version>6.14.3</version>
17 <scope>test</scope>
18 </dependency>
19 <dependency>
20 <groupId>org.seleniumhq.selenium</groupId>
21 <artifactId>selenium-java</artifactId>
22 <version>3.141.59</version>
23 </dependency>
24 <dependency>
25 <groupId>com.alibaba</groupId>
26 <artifactId>dubbo</artifactId>
27 <version>2.5.3</version>
28 <exclusions>
29 <exclusion>
30 <groupId>org.springframework</groupId>
31 <artifactId>spring</artifactId>
32 </exclusion>
33 </exclusions>
34 </dependency>
35
36 </dependencies>
37 <build>
38 <plugins>
39 <plugin>
40 <groupId>org.apache.maven.plugins</groupId>
41 <artifactId>maven-dependency-plugin</artifactId>
42 <executions>
43 <execution>
44 <id>copy-dependencies</id>
45 <phase>prepare-package</phase>
46 <goals>
47 <goal>copy-dependencies</goal>
48 </goals>
49 <configuration>
50 <outputDirectory>${project.build.directory}/lib</outputDirectory>
51 <overWriteReleases>false</overWriteReleases>
52 <overWriteSnapshots>false</overWriteSnapshots>
53 <overWriteIfNewer>true</overWriteIfNewer>
54 <excludeScope>provided</excludeScope>
55 </configuration>
56 </execution>
57 </executions>
58 </plugin>
59 <plugin>
60 <groupId>org.apache.maven.plugins</groupId>
61 <artifactId>maven-compiler-plugin</artifactId>
62 <version>3.0</version>
63 <configuration>
64 <source>1.7</source>
65 <target>1.7</target>
66 <encoding>UTF-8</encoding>
67 </configuration>
68 </plugin>
69 </plugins>
70 </build>
71 <distributionManagement>
72 <repository>
73 <id>releases</id>
74 <name>Team nexus Release Repository</name>
75 <url>http://10.118.888.10:8888/nexus/content/repositories/releases</url>
76 </repository>
77 <snapshotRepository>
78 <id>snapshots</id>
79 <name>Team nexus Snapshot Repository</name>
80 <url>http://10.118.888.10:8888/nexus/content/repositories/snapshots</url>
81 </snapshotRepository>
82 </distributionManagement>
83 </project>
这里计划使用TestNG和Selenium 作为自动化测试的框架,所以添加了这两个依赖包(根据需要添加)。另外repository镜像源地址最好添加为公司私有的资源镜像地址或者国内一些开源的镜像地址,比如阿里云、网易等。
编写测试用例
在src/test/java下建立一个测试类,包名com.nitb.demo(根据自己意愿随意取),类名Demo1。
代码如下:
package com.nitb.demo;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.File;
public class Demo1 {
private static WebDriver driver;
private static String executePath;
@BeforeClass
public void init() {
executePath = System.getProperty("user.dir") + File.separator + "bin" + File.separator + "chromedriver_mac";
System.setProperty("webdriver.chrome.driver", executePath);
driver = new ChromeDriver();
}
@Test
public void testDemoLogin() throws InterruptedException{
System.out.print("testDemoLogin");
}
@AfterClass
public void quit() {
driver.quit();
}
}
测试用例比较简单,三个逻辑:
- 测试类实例化开始的时候,执行init,设置下当前系统应该使用哪个chromedriver,因为我是mac,且Chrome浏览器的版本是72.0.3626.81,所以去selenium官网下载了对应版本的driver放在bin下面使用。
- 使用testng.xml去运行类中有@Test注释的测试方法。
- 测试类实例销毁的时候,退出ChromeDriver。
testng.xml的内容
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 3 <suite name="Suite1" verbose="1" > 4 <test name="Regression1"> 5 <classes> 6 <class name="com.wilmar.loms.testcase.ManualOrderTest"/> 7 </classes> 8 </test> 9 </suite>
这里的demo属于较简单的:
- suite:代表一个测试集,里面可以包含多个测试。
- test:代表一个测试事务,里面可以运行多个测试类及多个测试方法。
- classes:包含测试事务要运行的所有测试类。
- classs:代表具体运行哪个类。
通过IDEA运行testng.xml
右击testng.xml文件,然后点击run xxx/testngxml即可。
命令行运行testng.xml
java -ea -cp $CLASSPATH org.testng.TestNG testng.xml
这里需要注意的是$CLASSPATH指的是所有的依赖包,jar包较多,这里不举例,另外最后一个参数可以是testng.xml单个文件,也可以是包含多个testng xml配置文件的路径。
【TestNG测试】TestNG、Maven、testng.xml构建测试工程的更多相关文章
- maven - pom.xml 聚合(父)工程 基本内容演示
企业开发中所用到的基本jar包以及插件都已在此 可以自己根据实际情况酌情增减 <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...
- Maven创建Web工程并执行构建/测试/打包/部署
创建工程基本参考上一篇Java Application工程,不同的是命令参数变了,创建Web工程的命令如下: mvn archetype:generate -DgroupId=com.jsoft.te ...
- TestNG(十五)xml文件实现多线程测试
package com.course.testng.thread; import org.testng.annotations.Test; public class ThreadOnXml { @Te ...
- testng入门教程12 TestNG执行多线程测试
testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...
- testng入门教程11 TestNG运行JUnit测试
现在,您已经了解了TestNG和它的各种测试,如果现在担心如何重构现有的JUnit代码,那就没有必要,使用TestNG提供了一种方法,从JUnit和TestNG按照自己的节奏.也可以使用TestNG执 ...
- testng入门教程10 TestNG参数化测试
在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大的不同数量的测试.参数测试,允许开发人员运行同样的测试,一遍又一遍使用不同的值. TestNG让你 ...
- testng入门教程9 TestNG依赖测试
有时候,你可能需要在一个特定的顺序调用方法在测试案例,或你想分享一些数据和方法之间的状态.TestNG支持这种依赖测试方法之间的显式依赖它支持声明. TestNG允许指定依赖,无论与否: 使用属性de ...
- testng入门教程8 TestNG异常测试
TestNG跟踪异常处理代码提供了一个选项.可以测试是否需要代码抛出异常或不抛出. @Test注释expectedExceptions 参数一起使用.现在,让我们来看看@Test(expectedEx ...
- testng入门教程7 TestNG组测试
在TestNG中组测试是一个新的创新功能,它不存在于JUnit框架,它允许调度到适当的部分方法和瓶坯复杂的测试方法分组.您不仅可以声明属于群体的那些方法,但你也可以指定一组包含其他组.然后,TestN ...
随机推荐
- 自制年月选择插件 jquery.MyDatePicker v1.0beta
参数: el: null, //默认值和位置从哪个文本框取,传入jquery对象 ,默认为this 用于按钮引发文本框的focus事件来弹出 viewtype: 'month', //日期控件模式 默 ...
- 使用 FRP 反向代理实现 Windows 远程连接
互联网普及率的日渐攀升与 IPv4 资源的持续减少,现在大部分家庭宽带都不会分配公网 IP ,这使一些网络应用的实现多了些困难,像个人的 NAS 和一些智能家居设备.对于分配公网 IP ,各地运营商的 ...
- hdu2102
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014303647/article/details/27705195 题目链接: pid=2102& ...
- 20165318 2017-2018-2 《Java程序设计》第六周学习总结
20165318 2017-2018-2 <Java程序设计>第六周学习总结 教材内容学习总结 第八章 常用实用类 1.String类 String类用来处理字符序列,在java.lang ...
- 20165318 2017-2018-2 《Java程序设计》第三周学习总结
20165318 2017-2018-2 <Java程序设计>第三周学习总结 学习总结 我感觉从这一章开始,新的知识点扑面而来,很多定义都是之前没有接触过的,看书的时候难免有些晦涩.但由于 ...
- Java并发编程--2.synchronized
前言 synchronized关键字是互斥锁,也称为内部锁 每个对象都有自己的monitor(锁标记),它是为了分配给线程,最多一个线程可以拥有对象的锁 使用 synchronized修饰成员方法,锁 ...
- ElasticSearch 简单的 搜索 聚合 分析
一. 搜索1.DSL搜索 全部数据没有任何条件 GET /shop/goods/_search { "query": { "match_all": {} } } ...
- Codeforces 1130 E.Wrong Answer 构造
题目要求构造一组数据使得题目给出代码的anwser和正确答案恰好相差k,我们记题目给出代码的输出为ans1,正确答案为ans2. 我们假设已经有总和为s的p个正数,使得此时的ans1=ans2=s*p ...
- Docker实战(五)之端口映射与容器互联
除了网络访问外,Docker还提供了两个很方便的功能来满足服务访问的基本需求:一个是允许映射容器内应用的服务端口到本地宿主主机;另一个是互联机制实现多个容器间通过容器名来快速访问. 1.端口映射实现访 ...
- Plugin with id 'com.novoda.bintray-release' not found的解决方法
我们一般在在github上下载下来的代码,有时候会提示Plugin with id ‘com.novoda.bintray-release’ not found的错误,这个怎么解决呢,其实很简单,只要 ...