在Eclipse中使用Junit测试代码

一、在项目中加入Junit库

在Eclipse中使用Junit测试代码_第1张图片
右击项目文件,在选项中选择BuildPath这一选项。
在Eclipse中使用Junit测试代码_第2张图片
选择Add Libbraries选项,在其中找到Junit,可以自行选择需要的Junit版本。
在Eclipse中使用Junit测试代码_第3张图片

当你的项目中除了之前的基础库文件,还出现了Junit库,说明已经添加完成了。
在这里插入图片描述
二、Junit代码的构建

    @Test
    public void testSet()
    {
    	Graph<String> current=emptyInstance();
    	//测试错误输入负的权值
    	assertEquals(-1,current.set("A", "B", -1));
    	assertEquals(false,current.vertices().contains("A"));
    	assertEquals(false,current.vertices().contains("B"));
    	assertEquals(false,current.targets("A").containsKey("B"));
    	//测试权值不为0,图中没有这两点也没有这条边的情况,返回值应该是零,并且两个点应该已经被插入到图中,这条边也已经被插入到图中
    	assertEquals(0,current.set("A", "B", 1));
    	assertEquals(true,current.vertices().contains("A"));
    	assertEquals(true,current.vertices().contains("B"));
    	assertEquals(true,current.targets("A").containsKey("B"));
    	//测试权值不为零,图中已经存在这两点的情况,返回值应该是1(同时完成对先前加入的边的权值的查看)
    	assertEquals(1,current.set("A", "B", 2));
    	//测试权值为0,图中已经存在这两点的情况,返回值应该是2,并且这条边已经被删除
    	assertEquals(2,current.set("A", "B", 0));
      	assertEquals(false,current.targets("A").containsKey("B"));
    	//测试权值不为零,图中有这两个点,但是没有这样的边的情况,返回值应该是0,并且这条边已经被添加
    	assertEquals(0,current.set("A", "B", 2));
    	assertEquals(true,current.targets("A").containsKey("B"));
    	//测试权值为0,图中没有这两点也没有这条边的情况,返回值应该是0,但是同时没有对这两个点进行插入操作,也没有对这条边进行插入
    	assertEquals(0,current.set("C", "D", 0));
    	assertEquals(false,current.vertices().contains("C"));
    	assertEquals(false,current.vertices().contains("D"));
    	assertEquals(false,current.targets("C").containsKey("D"));
    }

以我之前对构建的图的类为例说明Junit代码的基本思路。
首先对于任何用于测试的函数,都需要加上@Test标签,否则Eclipse不会识别你的测试方法,运行时不会执行。
然后重点使用assertEquals函数,这个函数前一个参数是给定的正确结果,后一个参数是你要测试方法的返回结果。只有当两者相同,测试的结果才会是正确的。
在Eclipse中使用Junit测试代码_第4张图片
正确的结果将被标注为绿色,红色代表有运行错误,蓝色代表assertEquals结果出现错误,可以进一步进行检查。
比如以下这个例子
在这里插入图片描述
这一测试出现蓝色,双击这一内容进行检查。
在这里插入图片描述
发现以下错误信息。
在这里插入图片描述
双击上面一行进一步对比结果。
在Eclipse中使用Junit测试代码_第5张图片
可以看到详细的比较结果,然后返回查看代码的运行情况,进行debug。

3、使用注意
(1)当使用Junit时如果代码中包含有exit函数,测试程序会直接卡死,网上有一些处理方式,详细可以查看
https://blog.csdn.net/weixin_43872188/article/details/104781255
(2)如果函数没有返回值可以进行比较,可以在类中定义相关的观察者方法,比如重写toString函数,当成检查的方式。
(3)测试类也可以进行继承,并且子类如果没有重写父类中的测试函数,子类会自动执行父类的测试。
举例:
在Eclipse中使用Junit测试代码_第6张图片
可以看到这一类中只写了三个测试方法。
在Eclipse中使用Junit测试代码_第7张图片
运行后可以看到执行了一些其他函数,而这些函数恰恰就是父类中的测试函数。
在Eclipse中使用Junit测试代码_第8张图片

你可能感兴趣的:(java)