JUnit 是用于测试 java程序的一个工具,是在软件开发中非常重要的技术。
JUnit的用处:
这个工具可以针对特定的java程序生成对应的测试程序,在测试程序里用正确答案和java程序跑出来的答案做对比,一定程度上可以检验java程序的正确性。
为什么要用JUnit?
我们在编写程序的时候,常常需要在写完一个函数或者方法之后,检验它的正确性。在最基础的编程阶段时,我们写的程序通常也不会很复杂,这时候直接把答案输出来,对比对比就能出结论。但是当我们写的程序变得越来越复杂的时候,如果还在函数里面把结果输出来,之后再去找的时候就会很麻烦,如果这还不是自己写的程序,就更麻烦了,所以最好就要有一个专门用于测试的程序,这时JUnit就会显得特别重要。
JUnit在哪?
如果你安装的java编写程序是eclipse,这就很好办,因为eclipse自带JUnit,只是不同版本的eclipse把JUnit放在了不同的地方,但是也很好找。
怎么用JUnit?
- 既然是测试工具,那就要有被测试的对象,在学习使用JUnit的时候,可以自己先写一个简单的程序,下面是我用来测试的java程序。
package test;
public class JUnitTest {
public int gcd(int a,int b) {
return b==0?a:gcd(b,a%b);
}
public int add(int a,int b) {
return a+b;
}
}
2. 在这个包含类的project按右键->Properties->Java Build Path->Add Library->JUnit->Next->JUnit5->Finish
这样就把JUnit需要用到的包导进来了。
3. 在这个被测试类上按右键->New->JUnit Test Case
(没有直接在菜单里找到JUnit Test Case的话可以在Other里找到Java->JUnit->JUnit Test Case,新的版本就需要自己想办法翻一翻啦。。)然后按Next,就会弹出下面这个框。
勾选setUp,按Next,就会出现下面这个框,勾选想要测试的方法
此时就会生成一个测试文件,如下所示
package test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class JUnitTestTest {
@BeforeEach
void setUp() throws Exception {
}
@Test
void testGcd() {
fail("Not yet implemented");
}
@Test
void testAdd() {
fail("Not yet implemented");
}
}
可以看到,生成的文件里面有几个标识符,如@BeforeEach和@Test,它们的解释可以参考https://junit.org/junit5/docs/current/user-guide/
在@Test之后的是测试部分,可以看到,我们之前勾选过的方法都有一个对应的测试方法,里面的内容需要自己填写,用assertEquals((正确答案),(调用程序跑出来的结果));去测试。填写后的代码如下:
package test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class JUnitTestTest {
JUnitTest test = new JUnitTest();
@BeforeEach
void setUp() throws Exception {
}
@Test
void testGcd() {
assertEquals(3,test.gcd(3, 9));
}
@Test
void testAdd() {
assertEquals(12,test.add(3, 9));
}
}
对这个测试类按右键->Run As JUnit Test,就会得到这个结果:
左边栏会出现一个JUnit的结果:
下面显示的 Runs:2/2 表示两个Test都可以运行,Errors:0表示没有出错,Failures:0表示没有运行失败,这时下面显示出一个绿色的横条,表明测试没有出错,如果出错了,下面就会是红色的横条,横条下面就会有各个测试的情况,若某个测试的右下角有一个小小的红色叉号,表明这个测试出了错,点击这个测试,下面的Failure Trace就会显示出错误原因。
这个只是初步的学习,之后对JUnit有了更深一步的理解或者更好的应用的时候再回来更新吧~~