JUnit 测试用例 @Before @BeforeClass 注释

JUnit 是最受欢迎的单位 测试 框架在 Java.明确建议 单元测试. JUnit 不需要服务器来测试Web应用程序,这使得测试过程快速。

JUnit 框架还允许快速轻松地生成测试用例和测试数据。 组织Junit 包由许多接口和类组成 JUnit 测试,如测试、断言、之后、之前等。

什么是测试治具

在了解测试夹具是什么之前,让我们研究一下下面的代码

该代码旨在对一个简单文件执行两个测试用例。

public class OutputFileTest {
    private File output; 
    output = new File(...);
    output.delete(); 
public void testFile1(){
        //Code to verify Test Case 1
}
    output.delete();
    output = new File(...);
public void testFile2(){
        //Code to verify Test Case 2
}
 output.delete(); 
}

这里有几个问题

  • 代码不可读
  • 代码不易维护。
  • 当测试套件很复杂时,代码可能包含逻辑问题。

使用以下方法比较相同的代码 JUnit

public class OutputFileTest		
{
    private File output; 
    @Before public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

代码的可读性和可维护性都大大提高。上面的代码结构是 测试治具。

测试装置是一个上下文, JUnit 测试用例 运行。通常,测试装置包括:

  • 可用于任何测试用例的对象或资源。
  • 使这些对象/资源可用所需的活动。
  • 这些活动
    1. 分配(格局)
    2. 取消分配(拆除).

安装和拆卸

  • 通常,在每个测试用例之前必须完成一些重复的任务。 计费示例: 创建数据库连接。
  • 同样,在每个测试用例结束时,可能会有一些重复的任务。 计费示例: 测试执行结束后进行清理。
  • JUnit 提供有助于设置和拆卸的注释。它确保资源得到释放,并且测试系统处于准备状态以进行下一个测试用例。

这些 JUnit 注释讨论如下-

设置

@前 注释 JUnit 用于包含 Java 在每个测试用例之前运行的代码。即它在每次测试执行之前运行。

拆除(无论判决结果如何)

@后 注释用于包含 Java 代码的方法,在每个测试用例之后运行。即使测试用例中抛出任何异常或断言失败,这些方法也会运行。

请注意:

  • 允许有任意数量的上面列出的注释。
  • 所有方法均带注释 @前 in JUnit 将在每个测试用例之前运行,但它们可以按任何顺序运行。
  • 你可以从超类继承@Before和@After方法,执行如下: JUnit.
  1. 执行 JUnit 超类中的 @Before 方法
  2. 执行此类中的@Before 方法
  3. 执行此类中的@Test方法
  4. 执行此类中的@After方法
  5. 执行超类中的@After 方法

示例:创建以文件作为测试装置的类

public class OutputFileTest		
{
    private File output; 
    @Before	public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

在上面的例子中,执行链如下-

安装和拆卸

  1. 创建输出文件()
  2. 测试文件1()
  3. 删除输出文件()
  4. 创建输出文件()
  5. 测试文件2()
  6. 删除输出文件()

假设:

testFile1() 在 testFile2() 之前运行——这无法保证。

一次性设置

  • 在执行任何测试之前,以及在任何 @前 方法)。
  • “一次性设置”对于启动服务器、打开通信等很有用。每次测试时关闭并重新打开资源非常耗时。
  • 这可以使用注释来完成 @课前 in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

一次性拆除

  • 与仅一次设置类似,还提供了仅一次清理方法。它在所有测试用例方法之后运行,并且 @后 注释已经执行。
  • 它对于停止服务器、关闭通信链接等很有用。
  • 这可以使用 @下课以后 注解
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit 测试套件

如果我们想按指定顺序执行多个测试,可以通过将所有测试组合到一个地方来实现。这个地方称为测试套件。有关如何执行测试套件以及如何在 JUnit 将在本篇文章中介绍 教程.

Junit 测试运行器

JUnit 提供执行测试用例的工具。

  • JUnit核心科目 类用于执行这些测试。
  • 一种方法叫 运行课程 提供 org.junit.runner。JUnit核, 用于运行一个或多个测试类。
  • 此方法的返回类型是 结果 对象(org.junit.runner.结果),用于访问有关测试的信息。请参阅以下代码示例以获得更清晰的说明。
public class Test {				
			public static void main(String[] args) {									
       		Result result = JUnitCore.runClasses(CreateAndSetName.class);					
			for (Failure failure : result.getFailures()) {							
         		System.out.println(failure.toString());					
      }		
      System.out.println(result.wasSuccessful());					
   }		
}      

在上面的代码中,“结果”对象被处理以获取我们正在执行的测试用例的失败和成功结果。

(名) JUnit 程序

对 SDLC、Java 编程和基础知识有一定的了解 软件测试 过程有助于理解 JUnit 程序。

让我们通过一个实例来理解单元测试。我们需要创建一个测试类,其中包含一个注释为 @测试 如下所示:

我的第一个类测试.java

package guru99.JUnit;		

import static org.JUnit.Assert.*;				

import org.JUnit.Test;		

public class MyFirstClassTest {				

    @Test		
    public void myFirstMethod(){					
        String str= "JUnit is working fine";					
        assertEquals("JUnit is working fine",str);					
    }
}		

测试运行器.java

要执行我们的测试方法(上述),我们需要创建一个测试运行器。在测试运行器中,我们必须将测试类作为参数添加到 JUnit核心的 runclasses() 方法。它将根据测试是通过还是失败返回测试结果。

有关更多详细信息,请参阅以下代码:

package guru99.JUnit;		

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

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

输出

一旦 测试运行器.java 执行我们的测试方法,我们得到失败或通过的输出。请参阅以下输出说明:

  1. 在此示例中,执行后 我的第一个类测试.java ,测试通过并且结果为绿色。
  2. 如果失败,结果应该显示为红色,并且可以在故障轨迹中观察到故障。见下文 JUnit 图形用户界面:

JUnit 程序输出

结语

  • JUnit 是一个支持多种注释来识别包含测试的方法的框架。
  • JUnit 提供了一个注释 @测试, 这告诉 JUnit 使用它的公共 void 方法可以作为测试用例运行。
  • 测试装置是测试用例运行的环境
  • 要按指定顺序执行多个测试,可以将所有测试组合到一个地方。这个地方称为测试套件。
  • JUnit 提供了一个执行测试的工具,我们可以在其中运行称为测试运行器的测试用例。