头歌实践教学平台:Junit实训入门篇

第3关:Junit断言

任务描述

给定一个断言测试类AssertionsTest.java,请按要求补全代码,写出相应的断言测试。

相关知识
Junit断言

Junit的断言方法允许检查测试方法的期望结果值和真实返回值。Junit的org.junit.Assert类提供了各种断言方法来写junit测试,这些方法被用来检查方法的真实结果值和期望值。

代码示例

创建一个文件名为 TestAssertions.java 的类,如下:

 
  1. package com.trustie.junittest;
  2. import org.junit.Test;
  3. import static org.junit.Assert.*;
  4. public class TestAssertions {
  5. @Test
  6. public void testAssertions() {
  7. //test data
  8. String str1 = new String ("abc");
  9. String str2 = new String ("abc");
  10. String str3 = null;
  11. String str4 = "abc";
  12. String str5 = "abc";
  13. int val1 = 5;
  14. int val2 = 6;
  15. String[] expectedArray = {"one", "two", "three"};
  16. String[] resultArray = {"one", "two", "three"};
  17. //Check that two objects are equal
  18. assertEquals(str1, str2);
  19. //Check that a condition is true
  20. assertTrue (val1 < val2);
  21. //Check that a condition is false
  22. assertFalse(val1 > val2);
  23. //Check that an object isn't null
  24. assertNotNull(str1);
  25. //Check that an object is null
  26. assertNull(str3);
  27. //Check if two object references point to the same object
  28. assertSame(str4,str5);
  29. //Check if two object references not point to the same object
  30. assertNotSame(str1,str3);
  31. //Check whether two arrays are equal to each other.
  32. assertArrayEquals(expectedArray, resultArray);
  33. }
  34. }

在以上类中我们可以看到,这些断言方法是可以工作的。

  • assertEquals() 如果比较的两个对象是相等的,此方法将正常返回;否则失败显示在JUnit的窗口测试将中止。

  • assertSame() 和 assertNotSame() 方法测试两个对象引用指向完全相同的对象。

  • assertNull() 和 assertNotNull() 方法测试一个变量是否为空或不为空(null)。

  • assertTrue() 和 assertFalse() 方法测试if条件或变量是true还是false。

  • assertArrayEquals() 将比较两个数组,如果它们相等,则该方法将继续进行不会发出错误。否则失败将显示在JUnit窗口和中止测试。

编程要求

本关的编程任务是给定一个断言测试类AssertionsTest.java,请按要求补全代码,写出相应的断言测试。

具体要求如下:

1.断言obj1和obj2相等; 2.断言obj3和obj4指向完全相同的对象; 3.断言obj2和obj4指向不同的对象; 4.断言obj1对象不为空; 5.断言obj5对象为空; 6.断言var1小于var2; 7.断言arithmetic1和arithmetic2两个数组相等。

本关涉及的代码文件AssertionsTest.java的代码如下:

 
  1. package step3;
  2. import static org.junit.Assert.*;
  3. import org.junit.Test;
  4. public class AssertionsTest {
  5. String obj1 = "junit";
  6. String obj2 = "junit";
  7. String obj3 = "test";
  8. String obj4 = "test";
  9. String obj5 = null;
  10. int var1 = 1;
  11. int var2 = 2;
  12. int[] arithmetic1 = { 1, 2, 3 };
  13. int[] arithmetic2 = { 1, 2, 3 };
  14. @Test
  15. public void test() {
  16. //请在下面的Begin/End内写添加断言测试的代码,不要改动其他地方的代码
  17. /***********************Begin**************************/
  18. /************************End***************************/
  19. }
  20. }
评测说明

本关卡的测试文件是TestRunner.java,该文件进行了函数封装且学员不可见,用于验证学员的Junit测试代码是否正确。

具体测试过程如下:

1.平台自动编译生成TestRunner.exe; 2.平台运行TestRunner.exe; 3.获取TestRunner.exe输出,并将其输出与预期输出对比:如果一致则测试通过,否则测试失败。

预期输入: 预期输出:true

友情提示

1.请不要直接println最终输出,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。

2.学员答题时请尽量手敲代码,请勿从实训讲解代码片段中复制代码段粘贴到答题区域作答,复制的内容会保留一些格式和字符,导致编译失败。

开始你的任务吧,祝你成功!

代码如下

package step3;

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

public class AssertionsTest {
	String obj1 = "junit";
	String obj2 = "junit";
	String obj3 = "test";
	String obj4 = "test";
	String obj5 = null;
	int var1 = 1;
	int var2 = 2;
	int[] arithmetic1 = { 1, 2, 3 };
	int[] arithmetic2 = { 1, 2, 3 };

	@Test
	public void test() {

		//请在下面的Begin/End内写添加断言测试的代码,不要改动其他地方的代码
		/***********************Begin**************************/
        assertEquals(obj1,obj2);//断言obj1和obj2相等
        assertSame(obj3,obj4);//断言obj3和obj4指向完全相同的对象
        assertNotSame(obj2,obj4);//断言obj2和obj4指向不同的对象
        assertNotNull(obj1);//断言obj1对象不为空
        assertTrue(var1<var2);//断言obj5对象为空断言var1小于var2
        assertArrayEquals(arithmetic1,arithmetic2);//断言arithmetic1和arithmetic2两个数组相等
		/************************End***************************/
    }
}

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值