最近,需要向组中的其他成员普及Java测试用例的知识,现在我们将对其进行简单的学习和总结。
JUnit概述
JUnit是一个开源的Java单元测试框架,JUnit4极大地改进了传统的JUnit框架。 主要目标是利用Java的注释,而不是必须继承AbstractTestCase,并且要测试的方法名称必须是test作为前缀。
JUnit4有三个Annotation,用于控制测试的整个生命周期。
@Before
相当于测试用例的初始化工作,在执行每个测试用例方法时,该方法首先执行。
@After
测试用例清理工作由此方法创建,并在每个方法执行完成后进行清理。
@Before和@After确保一些测试用例的资源在这些方法上运行,并且不受@Test方法执行顺序的影响。
@Test
这是一种实际的测试方法,根据该方法中的断言语句(Assert )显示和输出测试用例的执行结果。
@Test还具有以下有用属性:
expect=xxxx.class (extends throwable ) )。
如果测试方法预计会出现一些错误,请使用此方法进行处理。 一个函数抛出异常,可能是你想要的结果。
timeout=xxxx(1毫秒的值) () ) ) ) ) ) ) ) ) ) ) ) ) 65 ) ) ) ) ) ) )
如果测试方法未在指定的timeout时间内运行,则测试将失败。 这有助于提高单元测试的效率。
在实践测试驱动开发时,@Ignore可以暂时忽略一些已定义但未实现的方法。
JUnit有参数化测试的概念。 写一个测试函数,在一些情况下作为参数传递,测试就可以了。
可以用参数化的方法进行批量测试,如以下代码所示。
@runwith(parameterized.class )。
publicclassbelongtoregionfunctiontestcase {
隐私保护功能;
私密布尔执行;
保密登录id;
私有内参与id;
@Before
公共void设置() }
function=newbelongtoregionfunction;
}
@After
公共语音下载
函数=null;
}
@Parameterized.Parameters
publicstaticcollectionpreparedata (
return Arrays.asList (
新对象[ ] { true,15,8 },
new Object[]{true,105,8 },
新对象[ ] { false,2,8 }
);
}
publicbelongtoregionfunctiontestcase (布尔表达式,int regionId,int parentRegionId ) {
this.expected=expected;
this.regionId=regionId;
this.parentregionid=parentregionid;
}
@Test
公共语音测试() throws IOException { )。
string file path=this.getclass (.getclass loader ).get resource (region-00000000000008-top 100-new '
assert.assertequals(expected,function.evaluate ) regionid,parentRegionId,文件路径);
}
@Test
public void测试newregion () throws IOException { )。
string file path=this.getclass (.getclass loader ).get resource (region-0000000000008-top 1000-top 1000 ) ) )
assert.assertequals(expected,function.evaluate ) regionid,parentRegionId,文件路径);
}
}
在Maven上运行JUnit
Maven本身不是一个单元测试框架,它只是在构建和运行到特定生命周期时通过插件运行JUnit测试用例。 此插件是maven-surefire-plugin,也是测试运行器。
缺省情况下,maven-surefire-plugin运行测试源代码路径中的所有测试情况。 路径为src/test/java。 默认情况下,maven的测试阶段包含在几个阶段之前。 这意味着,在package和install阶段,缺省情况下测试都是先运行的。 如果想在package之前跳过此阶段,请使用类似以下的命令:
maven packagedskiptests
如果不仅需要跳过测试运行,而且还需要跳过测试编译:
maven packaged maven.test.skip=true
如果某个测试用例在运行时运行失败,并且想再次运行,则不需要一次运行所有测试用例,而只需要运行部分的测试用例。 maven-surefire-plugin提供了一个test参数,允许maven用户指定在命令行上运行的测试用例,可以使用通配符或添加多个test类。
maven testdtest=class * test,Class2*Test
可以在idea中设置工程测试资源文件夹。 这样,可以在程序中使用ClassLoader的getResource获得相应资源的路径和输入流。 建议不要将用于测试的资源强制防御到相应的开发资源包。
maven允许您定义测试资源的路径。
src/test/resources