Junit使用教程

二、核心——断言

断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过。

1. 断言核心方法

assertArrayEquals(expecteds, actuals) 查看两个数组是否相等。
assertEquals(expected, actual) 查看两个对象是否相等。类似于字符串比较使用的equals()方法
assertNotEquals(first, second) 查看两个对象是否不相等。
assertNull(object) 查看对象是否为空。
assertNotNull(object) 查看对象是否不为空。
assertSame(expected, actual) 查看两个对象的引用是否相等。类似于使用“==”比较两个对象
assertNotSame(unexpected, actual) 查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
assertTrue(condition) 查看运行结果是否为true。
assertFalse(condition) 查看运行结果是否为false。
assertThat(actual, matcher) 查看实际值是否满足指定的条件
fail() 让测试失败

2. 示例

  1. package test;

  2.   
  3. import static org.hamcrest.CoreMatchers.*;

  4. import static org.junit.Assert.*;

  5.   
  6. import java.util.Arrays;

  7.   
  8. import org.hamcrest.core.CombinableMatcher;

  9. import org.junit.Test;

  10.   
  11. public class AssertTests {

  12.   
  13. @Test

  14. public void testAssertArrayEquals() {

  15. byte[] expected = "trial".getBytes();

  16. byte[] actual = "trial".getBytes();

  17. org.junit.Assert.assertArrayEquals("failure - byte arrays not same", expected, actual);

  18. }

  19.   
  20. @Test

  21. public void testAssertEquals() {

  22. org.junit.Assert.assertEquals("failure - strings not same", 5l, 5l);

  23. }

  24.   
  25. @Test

  26. public void testAssertFalse() {

  27. org.junit.Assert.assertFalse("failure - should be false", false);

  28. }

  29.   
  30. @Test

  31. public void testAssertNotNull() {

  32. org.junit.Assert.assertNotNull("should not be null", new Object());

  33. }

  34.   
  35. @Test

  36. public void testAssertNotSame() {

  37. org.junit.Assert.assertNotSame("should not be same Object", new Object(), new Object());

  38. }

  39.   
  40. @Test

  41. public void testAssertNull() {

  42. org.junit.Assert.assertNull("should be null", null);

  43. }

  44.   
  45. @Test

  46. public void testAssertSame() {

  47. Integer aNumber = Integer.valueOf(768);

  48. org.junit.Assert.assertSame("should be same", aNumber, aNumber);

  49. }

  50.   
  51. // JUnit Matchers assertThat

  52. @Test

  53. public void testAssertThatBothContainsString() {

  54. org.junit.Assert.assertThat("albumen", both(containsString("a")).and(containsString("b")));

  55. }

  56.   
  57. @Test

  58. public void testAssertThathasItemsContainsString() {

  59. org.junit.Assert.assertThat(Arrays.asList("one", "two", "three"), hasItems("one", "three"));

  60. }

  61.   
  62. @Test

  63. public void testAssertThatEveryItemContainsString() {

  64. org.junit.Assert.assertThat(Arrays.asList(new String[] { "fun", "ban", "net" }), everyItem(containsString("n")));

  65. }

  66.   
  67. // Core Hamcrest Matchers with assertThat

  68. @Test

  69. public void testAssertThatHamcrestCoreMatchers() {

  70. assertThat("good", allOf(equalTo("good"), startsWith("good")));

  71. assertThat("good", not(allOf(equalTo("bad"), equalTo("good"))));

  72. assertThat("good", anyOf(equalTo("bad"), equalTo("good")));

  73. assertThat(7, not(CombinableMatcher.<Integer> either(equalTo(3)).or(equalTo(4))));

  74. assertThat(new Object(), not(sameInstance(new Object())));

  75. }

  76. }

三、核心——注解

1. 说明

@Before 初始化方法
@After 释放资源
@Test 测试方法,在这里可以测试期望异常和超时时间
@Ignore 忽略的测试方法
@BeforeClass 针对所有测试,只执行一次,且必须为static void
@AfterClass 针对所有测试,只执行一次,且必须为static void
@RunWith 指定测试类使用某个运行器
@Parameters 指定测试类的测试数据集合
@Rule 允许灵活添加或重新定义测试类中的每个测试方法的行为
@FixMethodOrder 指定测试方法的执行顺序

2. 执行顺序

一个测试类单元测试的执行顺序为:

@BeforeClass –> @Before –> @Test –> @After –> @AfterClass

每一个测试方法的调用顺序为:

@Before –> @Test –> @After

3. 示例

  1. package test;

  2.   
  3. import static org.junit.Assert.*;

  4.   
  5. import org.junit.*;

  6.   
  7. public class JDemoTest {

  8.   
  9. @BeforeClass

  10. public static void setUpBeforeClass() throws Exception {

  11. System.out.println("in BeforeClass================");

  12. }

  13.   
  14. @AfterClass

  15. public static void tearDownAfterClass() throws Exception {

  16. System.out.println("in AfterClass=================");

  17. }

  18.   
  19. @Before

  20. public void before() {

  21. System.out.println("in Before");

  22. }

  23.   
  24. @After

  25. public void after() {

  26. System.out.println("in After");

  27. }

  28.   
  29. @Test(timeout = 10000)

  30. public void testadd() {

  31. JDemo a = new JDemo();

  32. assertEquals(6, a.add(3, 3));

  33. System.out.println("in Test ----Add");

  34. }

  35.   
  36. @Test

  37. public void testdivision() {

  38. JDemo a = new JDemo();

  39. assertEquals(3, a.division(6, 2));

  40. System.out.println("in Test ----Division");

  41. }

  42.   
  43. @Ignore

  44. @Test

  45. public void test_ignore() {

  46. JDemo a = new JDemo();

  47. assertEquals(6, a.add(1, 5));

  48. System.out.println("in test_ignore");

  49. }

  50.   
  51. @Test

  52. public void teest_fail() {

  53. fail();

  54. }

  55. }

  56.   
  57. class JDemo extends Thread {

  58.   
  59. int result;

  60.   
  61. public int add(int a, int b) {

  62. try {

  63. sleep(1000);

  64. result = a + b;

  65. } catch (InterruptedException e) {

  66. }

  67. return result;

  68. }

  69.   
  70. public int division(int a, int b) {

  71. return result = a / b;

  72. }

  73. }

执行结果:

  1. in BeforeClass================

  2. in Before

  3. in Test ----Add

  4. in After

  5. in Before

  6. in Test ----Division

  7. in After

  8. in AfterClass=================

图中左上红框中部分表示Junit运行结果,5个成功(1个忽略),1个错误,1个失败。(注意错误和失败不是一回事,错误说明代码有错误,而失败表示该测试方法测试失败)

左下红框中则表示出了各个测试方法的运行状态,可以看到成功、错误、失败、失败各自的图标是不一样的,还可以看到运行时间。

右边部分则是异常堆栈,可查看异常信息。

原文:https://blog.csdn.net/wangpeng047/article/details/9628449

原文地址:https://www.cnblogs.com/peachh/p/9740038.html

时间: 2024-08-11 20:51:33

Junit使用教程的相关文章

Junit 4 Tutorials(Junit 4 教程)

本教程是比较全面的.较新的Junit 4 实用教程,译自:http://www.javatutorials.co.in/junit-4/,希望对大家有所帮助! 以下是本教程的内容设置,读者可以点击以下标题进行阅读: Junit测试框架介绍 Junit 测试框架是最流行的Java单元测试框架.Junit被用来开发Java类的单元测试. Junit Eclipse教程 介绍eclipse IDE 中junit的相关特性及其使用方法.在eclipse IDE中书写和运行单元测试代码的样例. Junit

Junit 4 Tutorials(Junit 4 教程) 一、Junit简介及Junit Eclipse 教程

Junit 测试框架简介 测试框架是最流行的Java单元测试框架.Junit被用来开发对Java类的单元测试.它就是一个类包,提供了各种方法来测试Java类中的方法(method). Junit 4 特性 简单的注解,提供书写Junit测试的基本特性 断言方法(Assert Methods)比较测试的方法执行结果值和期望值 @Ignore 注解,忽略测试方法或者测试类的执行 期望异常测试 超时测试 , 测试方法的执行时间 测试组件,一起运行一些测试类 参数化测试, 以不同的输入参数值测试方法 J

Junit 4 Tutorials(Junit 4 教程) 三、Junit4 断言方法

Junit 4 断言方法允许检查测试方法的期望结果值和真实返回值.Junit的org.junit.Assert类提供了各种断言方法来写junit测试.这些方法被用来检查方法的真实结果值和期望值.下列一些有用的断言方法列表: Junit 4 Assert Methods Method Description assertNull(java.lang.Object object) 检查对象是否为空 assertNotNull(java.lang.Object object) 检查对象是否不为空 as

Junit 4 Tutorials(Junit 4 教程) 四、Junit4 参数化测试

Junit 4 参数化测试 允许通过变化范围的参数值来测试方法.参数擦测试可以通过以下简单的步骤实现: 对测试类添加注解 @RunWith(Parameterized.class) 将需要使用变化范围参数值测试的参数定义为私有变量 使用上一步骤声明的私有变量作为入参,创建构造函数 .创建一个使用@Parameters注解的公共静态方法,它将需要测试的各种变量值通过集合的形式返回. 使用定义的私有变量定义测试方法 Junit 4 参数化测试样例 EvenNumberChecker.java 校验输

JUnit单元测试教程(翻译自Java Code Geeks)

JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUnit测试例子 使用Eclipse实现完整的JUnit例子 1 创建工程 2 创建要被测试的Java类 3 创建并运行JUnit测试用例 4 使用Ignore注解 5 创建测试套件suite tests 6 创建参数化测试parameterized tests 7 规则Rules 8 策略Catego

Junit使用教程(三)

四.实例总结 1. 参数化测试 有时一个测试方法,不同的参数值会产生不同的结果,那么我们为了测试全面,会把多个参数值都写出来并一一断言测试,这样有时难免费时费力,这是我们便可以采用参数化测试来解决这个问题.参数化测试就好比把一个“输入值,期望值”的集合传入给测试方法,达到一次性测试的目的. [java] view plaincopy package test; import static org.junit.Assert.*; import java.util.Arrays; import or

Junit使用教程 转

几乎所有程序员都听说过Junit的大名,但不知真正懂得运用它的人有多少,我便是其中的一个小白. 知道Junit是用来测试的,但却把“宝刀”当成了“菜刀”用.为了从此不再菜鸟,特此总结整理了下Junit的知识点. 开始之前确保你的项目引入了junit-xxx.jar和hamcrest-core-xxx.jar这两个包,xxx是版本号. 一.建立Junit测试类 1. 右击test测试包,选择New-->Oher... 2. 在窗口中找到Junit,选择Junit Test Case 3. 输入名称

Junit使用教程(一)

本文转载自:http://blog.csdn.net/wangpeng047/article/details/9627527 乎所有程序员都听说过Junit的大名,但不知真正懂得运用它的人有多少,我便是其中的一个小白. 知道Junit是用来测试的,但却把“宝刀”当成了“菜刀”用.为了从此不再菜鸟,特此总结整理了下Junit的知识点. 一.建立Junit测试类 1. 右击test测试包,选择New-->Oher... 2. 在窗口中找到Junit,选择Junit Test Case 3. 输入名称

Junit使用教程(四)

一.会用Spring测试套件的好处 在开发基于Spring的应用时,如果你还直接使用Junit进行单元测试,那你就错过了Spring为我们所提供的饕餮大餐了.使用Junit直接进行单元测试有以下四大不足: 1)导致多次Spring容器初始化问题 根据JUnit测试方法的调用流程,每执行一个测试方法都会创建一个测试用例的实例并调用setUp()方法.由于一般情况下,我们在setUp()方法中初始化Spring容器,这意味着如果测试用例有多少个测试方法,Spring容器就会被重复初始化多次.虽然初始

Junit使用教程(二)

二.核心——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否相等. assertEquals(expected, actual) 查看两个对象是否相等.类似于字符串比较使用的equals()方法 assertNotEquals(first, second) 查看两个对象是否不相等. assertNull(object) 查看对象是否为