第一部分:单元测试含义
单元测试就是编写的一段代码,用于检验目标代码的一个功能模块是否正确,就是对代码功能是否达到要求的测试。
第二部分:JUnit的概念
JUnit是一个Java语言的单元测试框架。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
- 用于测试期望结果的断言(Assertion)
- 用于共享共同测试数据的测试工具
- 用于方便的组织和运行测试的测试套件
- 图形和文本的测试运行器
第三部分:JUnit4.x
现阶段很多人都会使用JUnit4.x版本来进行单元测试。
JUnit4.x中拥有多个常用注解:
- @Before 在测试方法运行前运行
- @BeforeClass 全局仅执行一次,且第一个运行
- @After 在测试方法运行后允许
- @AfterClass 全局仅执行一次,且最后一个运行
- @Ignore 忽略此方法
- @Test 测试方法
第四部分:在eclipse上使用
1.创建一个JUnitTest的项目,再写一个叫做CeShi的类(测试)。

public class CeShi { private static int result; public void add(int n) { result = result + n; //这个是正确的 } public void minus(int n) { result = result + 10086; //明显是错误的 } public int getResult(){ return result; } }
2.将JUnit4导入项目中。
右击项目选择最下面的Properties(属性)




3.生成测试框架。
在CeShi.java上右击,创造新的JUnit Test Case。


next后选择CeShi中写出来的两个方法

结束后自动生成了一个新类,叫CeShiTest
4.修改CeShiTest的代码。
import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class CeShiTest { private static CeShi ceshi = new CeShi(); @Before public void setUp() throws Exception { } @Test public void testAdd() { ceshi.add(3); ceshi.add(4); assertEquals(7, ceshi.getResult()); } @Test public void testMinus() { ceshi.add(8); ceshi.minus(3); assertEquals(5, ceshi.getResult()); } }
5.运行测试代码。

6.测试结果

表示第一个add成功,而第二个minus失败。
_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_***分割线***_(:3 」∠ )__(:3 」∠ )__(:3 」∠ )__(:3 」∠ )_
其实我自己也觉得我上面的写的那个太简陋了…………于是我打算找一个JAVA项目来进行测试,然后我发现一个严重的问题:网上java项目太多我难以下手(´A`。)
于是我便借鉴了博客园一位用户的代码
地址:https://www.cnblogs.com/happyzm/p/6482886.html
在原先的基础上添加了一些代码
public class CeShi { private static int result; public void add(int n) { result = result + n; //这个是正确的 } public void minus(int n) { result = result + 10086; //明显是错误的 } public void multiply(int n) { } // 此方法尚未写好 public void divide(int n) { result = result / n; } public void square(int n) { result = n * n; } public void squareRoot(int n) { for (; ;) ; //Bug : 死循环 } public void clear() { result = 0; } public int getResult(){ return result; } }
import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import jdk.nashorn.internal.ir.annotations.Ignore; public class CeShiTest { private static CeShi ceshi = new CeShi(); @Before public void setUp() throws Exception { ceshi.clear(); } @Test public void testAdd() { ceshi.add(3); ceshi.add(4); assertEquals(7, ceshi.getResult()); } @Test public void testMinus() { ceshi.add(8); ceshi.minus(3); assertEquals(5, ceshi.getResult()); } @Test public void testSubstract() { ceshi.add(8); ceshi.minus(3); assertEquals(5, ceshi.getResult()); } @Test public void testMultiply() { fail("Not yet implemented"); } @Test public void testDivide() { ceshi.add(8); ceshi.divide(2); assertEquals(4, ceshi.getResult()); } }

由于其中有一个死循环,而JUnit还可以限时,所以我在自己的电脑上跑了一遍。
在CeShiTest.java里添加代码:
@Test(timeout = 2000) public void squareRoot() { ceshi.squareRoot(4); assertEquals(2, ceshi.getResult()); }

JUnit也可以进行异常测试,我自己在电脑上试了一下,这里就不说了,是按照https://www.cnblogs.com/happyzm/p/6482886.html 里去做的。
第五部分:总结
JUnit使用起来很方便,但我现在才发觉,作为一个软件工程的学生,只会摆出理论的一套,实际上手去做的时候总是不知该如何开始。
其次就是,我明白了JUnit是个什么东西,它有什么用,但实际要用到项目上去的时候,我很可能会完完全全的忽略掉它。
还是把网上的各种项目都试试看吧,java基础不好,各种项目我都看晕了_(´ཀ`」 ∠)_
浙公网安备 33010602011771号