JSRUN 用代码说话

API

JUnit 中的重要的 API

JUnit 中的最重要的程序包是 junit.framework 它包含了所有的核心类。一些重要的类列示如下:

类的名称 类的功能
Assert assert 方法的集合
TestCase 一个定义了运行多重测试的固定装置
TestResult TestResult 集合了执行测试样例的所有结果
TestSuite TestSuite 是测试的集合

Assert 类

下面介绍的是 org.junit.Assert 类:

public class Assert extends java.lang.Object

这个类提供了一系列的编写测试的有用的声明方法。只有失败的声明方法才会被记录。Assert 类的重要方法列式如下:

方法 描述
void assertEquals(boolean expected, boolean actual) 检查两个变量或者等式是否平衡
void assertFalse(boolean condition) 检查条件是假的
void assertNotNull(Object object) 检查对象不是空的
void assertNull(Object object) 检查对象是空的
void assertTrue(boolean condition) 检查条件为真
void fail() 在没有报告的情况下使测试不通过

下面让我们在例子中来测试一下上面提到的一些方法。在 C:\ > JUNIT_WORKSPACE 目录下创建一个名为 TestJunit1.java 的类。

import org.junit.Test;
import static org.junit.Assert.*;
public class TestJunit1 {
   @Test
   public void testAdd() {
      //test data
      int num= 5;
      String temp= null;
      String str= "Junit is working fine";

      //check for equality
      assertEquals("Junit is working fine", str);

      //check for false condition
      assertFalse(num > 6);

      //check for not null value
      assertNotNull(str);
   }
}

接下来,我们在 C:\ > JUNIT_WORKSPACE 目录下创建一个文件名为 TestRunner1.java 的类来执行测试案例。

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner1 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJunit1.class);
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
      System.out.println(result.wasSuccessful());
   }
}

用 javac 编译 Test case 和 Test Runner 类

C:\JUNIT_WORKSPACE>javac TestJunit1.java TestRunner1.java

现在运行 Test Runner 它将运行在 Test Case 类中定义并提供的测试样例。

C:\JUNIT_WORKSPACE>java TestRunner1

检查输出结果。

true

TestCase 类

下面介绍的是 org.junit.TestCaset 类:

public abstract class TestCase extends Assert implements Test

测试样例定义了运行多重测试的固定格式。TestCase 类的一些重要方法列式如下:

方法 描述
int countTestCases() 为被run(TestResult result)执行的测试案例计数
TestResult createResult() 创建一个默认的 TestResult 对象
String getName() 获取 TestCase 的名称
TestResult run() 一个运行这个测试的方便的方法,收集由TestResult 对象产生的结果
void run(TestResult result) 在 TestResult 中运行测试案例并收集结果
void setName(String name) 设置 TestCase 的名称
void setUp() 创建固定装置,例如,打开一个网络连接
void tearDown() 拆除固定装置,例如,关闭一个网络连接
String toString() 返回测试案例的一个字符串表示

我们在例子中尝试一下上文提到的方法。在 C:\ > JUNIT_WORKSPACE 路径下创建一个名为TestJunit2.java 的类。

import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
public class TestJunit2 extends TestCase  {
   protected double fValue1;
   protected double fValue2;

   @Before 
   public void setUp() {
      fValue1= 2.0;
      fValue2= 3.0;
   }

   @Test
   public void testAdd() {
      //count the number of test cases
      System.out.println("No of Test Case = "+ this.countTestCases());

      //test getName 
      String name= this.getName();
      System.out.println("Test Case Name = "+ name);

      //test setName
      this.setName("testNewAdd");
      String newName= this.getName();
      System.out.println("Updated Test Case Name = "+ newName);
   }
   //tearDown used to close the connection or clean up activities
   public void tearDown(  ) {
   }
}

接下来,在 C:\ > JUNIT_WORKSPACE 路径下创建一个名为 TestRunner2.java 的类来执行测试案例。

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner2 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJunit2.class);
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
      System.out.println(result.wasSuccessful());
   }
}

用 javac 编译 Test case 和 Test Runner 类

C:\JUNIT_WORKSPACE>javac TestJunit2.java TestRunner2.java

现在运行 Test Runner 它将运行在 Test Case 类中定义并提供的测试样例。

C:\JUNIT_WORKSPACE>java TestRunner2

检查输出结果。

No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
true

TestResult 类

下面定义的是 org.junit.TestResult 类:

public class TestResult extends Object

TestResult 类收集所有执行测试案例的结果。它是收集参数层面的一个实例。这个实验框架区分失败和错误。失败是可以预料的并且可以通过假设来检查。错误是不可预料的问题就像 ArrayIndexOutOfBoundsException。TestResult 类的一些重要方法列式如下:

方法 描述
void addError(Test test, Throwable t) 在错误列表中加入一个错误
void addFailure(Test test, AssertionFailedError t) 在失败列表中加入一个失败
void endTest(Test test) 显示测试被编译的这个结果
int errorCount() 获取被检测出错误的数量
Enumeration errors() 返回错误的详细信息
int failureCount() 获取被检测出的失败的数量
void run(TestCase test) 运行 TestCase
int runCount() 获得运行测试的数量
void startTest(Test test) 声明一个测试即将开始
void stop() 标明测试必须停止

在 C:\ > JUNIT_WORKSPACE 路径下创建一个名为 TestJunit3.java 的类。

import org.junit.Test;
import junit.framework.AssertionFailedError;
import junit.framework.TestResult;

public class TestJunit3 extends TestResult {
   // add the error
   public synchronized void addError(Test test, Throwable t) {
      super.addError((junit.framework.Test) test, t);
   }

   // add the failure
   public synchronized void addFailure(Test test, AssertionFailedError t) {
      super.addFailure((junit.framework.Test) test, t);
   }
   @Test
   public void testAdd() {
   // add any test
   }

   // Marks that the test run should stop.
   public synchronized void stop() {
   //stop the test here
   }
}

接下来,在 C:\ > JUNIT_WORKSPACE 路径下创建一个名为 TestRunner3.java 的类来执行测试案例。

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner3 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJunit3.class);
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
      System.out.println(result.wasSuccessful());
   }
}

用 javac 编译 Test case 和 Test Runner 类

C:\JUNIT_WORKSPACE>javac TestJunit3.java TestRunner3.java

现在运行 Test Runner 它将运行在 Test Case 类中定义并提供的测试样例。

C:\JUNIT_WORKSPACE>java TestRunner3

检查输出结果。

true

TestSuite 类

下面定义的是 org.junit.TestSuite 类:

public class TestSuite extends Object implements Test

TestSuite 类是测试的组成部分。它运行了很多的测试案例。TestSuite 类的一些重要方法列式如下:

方法 描述
void addTest(Test test) 在套中加入测试。
void addTestSuite(Class<? extends TestCase> testClass) 将已经给定的类中的测试加到套中。
int countTestCases() 对这个测试即将运行的测试案例进行计数。
String getName() 返回套的名称。
void run(TestResult result) 在 TestResult 中运行测试并收集结果。
void setName(String name) 设置套的名称。
Test testAt(int index) 在给定的目录中返回测试。
int testCount() 返回套中测试的数量。
static Test warning(String message) 返回会失败的测试并且记录警告信息。

在 C:\ > JUNIT_WORKSPACE 路径下创建一个名为 JunitTestSuite.java 的类。

import junit.framework.*;
public class JunitTestSuite {
   public static void main(String[] a) {
      // add the test's in the suite
      TestSuite suite = new TestSuite(TestJunit1.class, TestJunit2.class, TestJunit3.class );
      TestResult result = new TestResult();
      suite.run(result);
      System.out.println("Number of test cases = " + result.runCount());
    }
}

用 javac 编译 Test suit

C:\JUNIT_WORKSPACE>javac JunitTestSuite.java

现在运行 Test Suit

C:\JUNIT_WORKSPACE>java JunitTestSuite

检查输出结果。

No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
Number of test cases = 3
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟