Testng 简明教程

TestNG - Run JUnit Tests

既然你已经了解了 TestNG 及其各种测试,你现在一定很担心如何重构现有的 JUnit 代码。不必担心,因为 TestNG 提供了一种以自己的速度从 JUnit 转向 TestNG 的方法。你可以使用 TestNG 来执行现有的 JUnit 测试用例。

TestNG 可以自动识别和运行 JUnit 测试,这样你就可以将 TestNG 用作所有现有测试的运行器,并使用 TestNG 编写新的测试。你所需要做的就是将 JUnit 库放在 TestNG 类路径上,以便它可以找到和使用 JUnit 类,在 Ant 中将你的测试运行器从 JUnit 更改为 TestNG,然后在“混合”模式下运行 TestNG。这样,你可以将所有测试放在同一个项目中,甚至同一个包中,并开始使用 TestNG。此方法还允许你将现有的 JUnit 测试逐步转换为 TestNG。

让我们举个例子来演示 TestNG 的这种惊人功能。

Create JUnit Test Case Class

创建一个 java 类,它是一个 JUnit 测试类,在 /work/testng/src 中为 TestJunit.java。

  import org.junit.Test;
  import static org.testng.AssertJUnit.*;

  public class TestJunit {
     @Test
     public void testAdd() {
        String str = "Junit testing using TestNG";
        assertEquals("Junit testing using TestNG",str);
     }
  }

现在,让我们在 /work/testng/src 中编写 testng.xml,它将包含 <suite> 标记,如下所示:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name = "Converted JUnit suite" >
   <test name = "JUnitTests" junit="true">
      <classes>
         <class name = "TestJunit" />
      </classes>
   </test>
</suite>

要执行 JUnit 测试用例,请定义属性 junit="true",如上例中的 xml。JUnit 测试用例类 TestJunit 在类名中定义。

对于 JUnit 4,TestNG 将使用 org.junit.runner.JUnitCore 运行器来运行你的测试。

使用 javac 编译所有 Java 类。

/work/testng/src$ javac TestJunit.java

现在,运行 testng.xml,它将运行 JUnit 测试用例,如同 TestNG。

/work/testng/src$java -cp "/work/testng/src/junit-4.13.2.jar:/work/testng/src/hamcrest-core-1.3.jar" org.testng.TestNG testng.xml

在此,我们已经放置了依赖的 JAR 文件 junit-4.13.2.jar 和 hamcrest-core-1.3.jar,位于 /work/testng/src/ 下。

验证输出。

  ===============================================
  Converted JUnit suite
  Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
  ===============================================