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 测试用例 运行。通常,测试装置包括:
- 可用于任何测试用例的对象或资源。
- 使这些对象/资源可用所需的活动。
- 这些活动
- 分配(格局)
- 取消分配(拆除).
安装和拆卸
- 通常,在每个测试用例之前必须完成一些重复的任务。 计费示例: 创建数据库连接。
- 同样,在每个测试用例结束时,可能会有一些重复的任务。 计费示例: 测试执行结束后进行清理。
- JUnit 提供有助于设置和拆卸的注释。它确保资源得到释放,并且测试系统处于准备状态以进行下一个测试用例。
这些 JUnit 注释讨论如下-
设置
@前 注释 JUnit 用于包含 Java 在每个测试用例之前运行的代码。即它在每次测试执行之前运行。
拆除(无论判决结果如何)
@后 注释用于包含 Java 代码的方法,在每个测试用例之后运行。即使测试用例中抛出任何异常或断言失败,这些方法也会运行。
请注意:
- 允许有任意数量的上面列出的注释。
- 所有方法均带注释 @前 in JUnit 将在每个测试用例之前运行,但它们可以按任何顺序运行。
- 你可以从超类继承@Before和@After方法,执行如下: JUnit.
- 执行 JUnit 超类中的 @Before 方法
- 执行此类中的@Before 方法
- 执行此类中的@Test方法
- 执行此类中的@After方法
- 执行超类中的@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()
- 删除输出文件()
假设:
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 执行我们的测试方法,我们得到失败或通过的输出。请参阅以下输出说明:
- 在此示例中,执行后 我的第一个类测试.java ,测试通过并且结果为绿色。
- 如果失败,结果应该显示为红色,并且可以在故障轨迹中观察到故障。见下文 JUnit 图形用户界面:
结语
- JUnit 是一个支持多种注释来识别包含测试的方法的框架。
- JUnit 提供了一个注释 @测试, 这告诉 JUnit 使用它的公共 void 方法可以作为测试用例运行。
- 测试装置是测试用例运行的环境
- 要按指定顺序执行多个测试,可以将所有测试组合到一个地方。这个地方称为测试套件。
- JUnit 提供了一个执行测试的工具,我们可以在其中运行称为测试运行器的测试用例。