单元测试就是编写的一段代码,用于检验目标代码的一个功能模块是否正确,就是对代码功能是否达到要求的测试。html
JUnit是一个Java语言的单元测试框架。 JUnit有它本身的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit做为单元测试的工具。java
现阶段不少人都会使用JUnit4.x版原本进行单元测试。app
JUnit4.x中拥有多个经常使用注解:框架
1.建立一个JUnitTest的项目,再写一个叫作CeShi的类(测试)。eclipse
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导入项目中。ide
右击项目选择最下面的Properties(属性)工具
3.生成测试框架。单元测试
在CeShi.java上右击,创造新的JUnit Test Case。测试
next后选择CeShi中写出来的两个方法spa
结束后自动生成了一个新类,叫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基础很差,各类项目我都看晕了_(´ཀ`」 ∠)_