TestNG真的没啥可说的,百度testng,第一个是官网,第二个是肖前辈写的TestNG入门教程,深入浅出,写的十分详细明了。乌鸦自叹不如,仅仅记录一些使用过程遇到的坑和感想。另外,感谢@May 鼓励我写东西出来,坚持写东西对乌鸦来说是一件十分困难的事情,曾经断断续续反复了好几次。

对于IDE,乌鸦使用的IDEA,自带TestNG插件,省却了安装配置的过程。但是,要注意使用最新版本的IDEA(2016.1.3)。旧版本(14.1.)的插件有2个问题。
1.旧版本导出的报表中,方法输出的参数与类中方法输出的参数不匹配。比如method1输出的参数,在报告中,显示在了method2中。
2.旧版本的TestNG包是旧版本,断言中不支持assertNotEquals()

新建一个类Test,增加一个方法t()

public class Test {
    public void t(){
        System.out.println("This is t()");
    }
}

生成测试代码

点击菜单栏Navigate——Test,在弹出框中,点击 Create New Test

QQ截图20160701195804.png

如果是第一次使用,会提示你需要导入TestNG的jar包,点击Fix按钮即可自动导入IDEA自带的jar包或者选择自己下载的TestNG.jar。
点击OK即可创建一个测试类。然后加一些自己的东西:

public class TestTest {

    @BeforeMethod
    public void tUp(){
        Reporter.log("this is before");
    }

    @AfterMethod
    public void tDown(){
        Reporter.log("this is after");
    }

    @Test(groups = {"normal"})
    public void t() throws CloneNotSupportedException {
        Reporter.log("1=" + System.currentTimeMillis(), true);
        Assert.assertEquals("1", "1");
    }

    @Test(groups = {"abnoamal"})
    public void t2(){
        Reporter.log("2=" + System.currentTimeMillis() ,true);
        Assert.assertNotEquals("33", "33");
    }

}

断言

肖前辈没有说断言,乌鸦就捡漏补充一下。
常用的断言有:

Assert.assertEquals() //相等
Assert.assertNotEquals();//不相等
Assert.assertSame();//同一个
Assert.assertNotSame();//不是同一个
Assert.assertNull();//为空
Assert.assertNotNull();//不为空
Assert.assertTrue();//断言参数为true

如果在一个测试方法中,有一个以上的断言,则按顺序执行。如果前一个断言失败,后后续代码不再执行。

重点需要注意的是,判断两个字符串是否相等要用 assertEquals() ,而不是 assertSame() 。

运行

在IDEA里执行,只需要右键,点击 Run xxx 即可。
如果是在某一个方法的代码块里右键,出现的是 Run methodName ,即只运行当前的方法;
如果是在类的代码块里右键,出现的是 Run className ,即运行当前类中的所有Test方法;
也可以创建testng.xml,右键出现的 Run path/testng.xml ,即运行该配置文件中需要运行的方法。

导出结果

QQ截图20160701204208.png

可导出html或xml结果的报告,或者使用XSL模板自定义模板。(XSL模板在ant+jmeter导出报告时也用到了,搭建ant和jmeter一键测试平台

参考:
http://testng.org/doc/index.html

http://www.cnblogs.com/TankXiao/p/3888070.html