将JUint 4转化为TestNG

来源:互联网 发布:手机淘宝看不到支付宝 编辑:程序博客网 时间:2024/05/21 09:37

       对于大规模软件的测试,TestNG在很多方面的确优于JUnit 4。在项目开发初期,可能选择JUnit 4进行测试,但是到软件开发到一定阶段后,逐渐发现JUint 4不能满足更高的要求。此时,使用TestNG可以更好地对软件进行测试,那么如何从之前的JUnit 4测试转化为TestNG呢?

        将JUnit 4测试转化为TestNG,首先要解决的是方法前面的annotation。虽然TestNG的annotation与JUint 4的annotation大部分在名称和功能上都相同,但是有些还是不同。JUnit 4与TestNG的annotation对比如下图:


上表中只是一些简单annotation的对应关系,TestNG的最大的优势在于其提供的参数化测试,包括从testng.xml文件和@DataProvider两种方式提供参数。JUnit 4提供的参数化测试功能很有限,所以转化为TestNG测试之后,需要根据实际测试需要手动添加一些参数化测试代码。

除了annotation之外,TestNG的断言与JUnit 4在期望结果与实际结果的顺序上也有些区别。好在TestNG的提供AssertJUnit与JUnit 4的顺序是一致的,在转换的时候,只需要import这个class就可以了。

Eclipse的TestNG plug-in提供了自动将JUnit 4的测试类自动转换为TestNG的功能。可以通过两种途径实现转化:单个test class转化和整个package或source folder转化。

1. 单个test class转化

单个test class转化比较简单。在test class中按Ctrl + 1快捷键,在弹出的菜单中选择Convert to TestNG,整个test class就会自动转化为TestNG的test class。

实例如下:

JUnit 4的test class:

package com.ibm.testng.test;import static org.junit.Assert.assertTrue;import java.io.IOException;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.ibm.yuejming.Copyright;/** * @author yuejming@cn.ibm.com */@Copyright(Copyright.HEADER + "2013" + Copyright.FOOTER)public class JUnitTest {    @Before    public void setUp() {}    @Test(expected=IOException.class)    public void test1() {        assertTrue(true);    }    @Test    public void test2() {}        @After    public void tearDown() {}}

自动转化后的TestNG的test class:
package com.ibm.testng.test;import static org.testng.AssertJUnit.assertTrue;import org.testng.annotations.AfterMethod;import org.testng.annotations.Test;import org.testng.annotations.BeforeMethod;import java.io.IOException;import com.ibm.yuejming.Copyright;/** * @author yuejming@cn.ibm.com */@Copyright(Copyright.HEADER + "2013" + Copyright.FOOTER)public class JUnitTest {    @BeforeMethod    public void setUp() {}    @Test(expectedExceptions=IOException.class)    public void test1() {        assertTrue(true);    }    @Test    public void test2() {}        @AfterMethod    public void tearDown() {}}
转化前后的对比:

1)annotation跟之前表格的对应关系实现自动转化。

2)annotation对应import的class由JUnit 4的转化为TestNG的。

3)assert对应import的class由org.junit.Assert转化为org.testng.AssertJUnit。

2. 整个package或source folder转化

        要实现整个package或source folder的自动转化,选中需要转化的package或者source folder,点击右键,选中TestNG -> Convert to TestNG,就会出现Refactoring向导,后面根据需要进行选择就可了。