Junit是常用的测试单元,功能十分强大,因为目前代码还十分简单,这里我们只对它进行一个简单的讨论。
这里先给出助教的一个教程
接下来是自己总结的一点东西。

Junit配置

新建test文件夹,右键点击->Mark Directory as->Test Sources Root

注意不是Test Resources Root,作者一开始点错了,搞了好半天,痛哭流涕。

图片

随便选一个类的文件点进去(只要不是Main就行,本门课程中不会用到对它的测试)。
右键->Go to->test->create new test

图片
图片

Testing Library选择Junit 4,勾选想要测试的方法,点击OK。

图片

IDEA就会在test目录下自动生成一个测试文件。
这时候文件可能有警告,我们点击右上角的标识,
点击quik fix,点击添加路径,警告消除。

这个图后续再补吧hh 我实在懒得新建一个项目再截图了。

注意,保证文件开头有引用:

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

每一个测试是@Test开头的:

图片

接下来我们就可以进行编写啦!

Junit编写

基本编写

每一个方法是独立的,我们需要构建基本的情况和数据。
这里给出addBottle的一个简单测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Test
public void addBottle() {
ArrayList<Bottle> list = new ArrayList<>();
Bottle b = new Bottle("1", 1);
boolean add1 = list.add(b);
assertTrue(add1);
Bottle b2 = new Bottle("2", 1);
boolean add2 = list.add(b2);
assertTrue(add2);
Bottle b3 = new Bottle("3", 1);
boolean add3 = list.add(b3);
assertTrue(add3);
}

分块运行

每个方法左边有一个三角形,点击可以进行不同种类的运行。
图片
第一行的Run就是基础的运行,在遇到与预期不一致的Assert时会停下。
第三行的Run with Coverage,运行之后会有详细的数据,显示你的测试是否充分。
图片

该图左下角显示是否成功运行,右侧边栏显示测试覆盖率的一些情况。

测试基例

已经测试过确认正确的方法可以在其它测试方法中使用。
比如我们已经测试过getBottleaddBottle的正确性了,就可以在removeBottle的测试中使用这两个方法:

1
2
3
4
5
6
7
8
9
10
11
12
public void removeBottle() {
ArrayList<Bottle> bottleArrayList = new ArrayList<>();
ArrayList<Equipment> equipmentArrayList = new ArrayList<>();
Adventure adventure = new Adventure("Alice",bottleArrayList,equipmentArrayList);
adventure.AddEquipment("BrondeSword");
adventure.AddEquipment("GoldenSword");
adventure.AddBottle("HealPotion",20);
adventure.AddBottle("HealPotion2",30);
adventure.RemoveBottle("HealPotion");
Bottle temp = adventure.GetBottle("HealPotion");
assertNull(temp);
}

checkstyle

这里突然想起来checkstyle每个项目都要配置一下,简单写一下。
File->Setting->搜索checkstyle
图片
点击+ ->browse 选择xml文件所在路径,取名OO->OK
图片
图片
使用:左下角->check project
图片