http://cxr1217.iteye.com/blog/696828
1、最简单的testNG
- import org.apache.commons.lang.StringUtils;
- import org.testng.annotations.Test;
- public class StringUtilsTest{
- @Test
- public void isEmpty()
- {
- assert StringUtils.isEmpty(null);
- assert StringUtils.isEmpty("");
- }
- @Test
- public void trim()
- {
- assert "foo".equals(StringUtils.trim(" foo "));
- }
- }
这个例子是在网上找到的,这里挪用一下了
Eclipse/Myeclipse (可以在 http://beust.com/eclipse安装插件)直接运行即可:RUN AS >TestNG test
可以运用这样的java 进行单元测试,在这方面 与JUnit 没有太大的区别
2、testNG.xml
这个东西让我郁闷了很久,我一直以为任何的一个 testng 例子的运行都需要testNG.xml ,事实上不是这样,这个testNG.xml 我现在是这样理解的,是针对testNG示例进行管理的 配置。
一个testNG java类,可以对单个功能点 进行单元测试,比如一个系统的 login 是一个testNG-- TestHRLogin.java,
增加用户是一个 testNG --- TestHRAddUser.java
当我测试增加用户是否成功的时候,需要两个testNG都要运行,并且运行有先后顺序的,这个时候,testNG.xml 就荣耀登场了~
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="suite1">
<test name="testAddUser">
<classes>
<class name="test.suite.TestHRLoginBefore" /> //开始登陆前的一些必要操作
<class name="test.suite.TestHRLogin" /> // 登陆系统
<class name="test.suite.TestHRAddUser" /> //增加用户操作
</classes>
</test>
</suite>
testNG.xml 将login操作 和增加用户操作 进行配置,这样,不同的两个单元测试就可以一起运行了,而且在编写代码的过程中还可以根据两个测试用例的依赖关系进行设置,来确定 TEST 用例运行时所依赖的方法是哪个(后续~)
然后在testNG.xml上,右键 >Run As >TestNG Suite 即可对该suite进行运行
代码罗列如下,里面配置的IP 等相关信息仅是本机的一个测试项目:
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import test.sample.SeleniumInstance;
import com.thoughtworks.selenium.Selenium;
public class TestHRLoginBefore {
Selenium selenium = SeleniumInstance.getInstance(); //单例模式创建Selenium对象
@BeforeSuite
public void setUp() {
selenium.start();
System.out.println("======== setUp ===========");
}
@AfterSuite
public void tearDown(){
selenium.stop();
System.out.println("======= tearDown ===========");
}
}
TestHRAddUser.java :填写必要信息,点击确定按钮
- import org.testng.annotations.Test;
- import test.sample.SeleniumInstance;
- import com.thoughtworks.selenium.Selenium;
- public class TestHRAddUser {
- Selenium selenium = SeleniumInstance.getInstance();
- @Test(groups="HR")
- public void testAddUser(){
- selenium.open("/accesscontrol?inpage=listusers");
- selenium.click("css=a[href=/admin/admin_manage.jsp]");
- selenium.type("css=input[name=username]", "cxr1217");
- selenium.type("css=input[name=password]", "cxr1217");
- selenium.type("css=input[name=passwordensure]", "tianxiaocao");
- selenium.type("css=input[name=email]", "111@163.com");
- selenium.type("css=input[name=tel]", "12345678");
- selenium.type("css=input[name=mobile]", "111");
- selenium.type("cityvalue","02");
- selenium.click("css=a[href=\"javaScript:htmlsubmit();\"]");
- }
- }