IDEA配置JUnit进行单元测试的方法
-
前提条件
安装JDK,并配置好环境变量
工程已解决JUnit依赖关系(pom.xml)【pom是Maven的配置文件,可以忽略这条】
导包:File -> Project Struct… -> Libraies -> 点击绿色的加号 -> Java -> 找到 IDEA 安装路径下的 Lib 中的包 确定完就行了,点击OK就出去了。记住一定要把这两个包都导好。
-
IDEA中JUnit配置
IDEA自带一个JUnit插件,打开Settings窗口搜索junit,如图:
该插件保证了JUnit测试文件的顺利运行:
我的2018.6.1版本的idea可以 Ctrl + Shift + T 自动生成 “待测试类名test”类,默认自动生成在测试类所在包下面——但是自动生成的测试类较为简陋。若项目中已有该测试类,会给予提示,让我选择是新建test类还是打开已有的类。
如果需要自动生成更完备的自定义测试代码,需要安装JUnitGenerator V2.0插件:
安装完成后重启idea,在待测试的类中打开Generate (快捷键:Alt+Insert)便可生成jUnit test 这是这个插件提供的功能,可以自动生成一个比较完备的可自定义的测试类。
默认的测试类的OutPut位置是在自动创建的一个test项目,里面的java包当中。这样的话这个测试类便没法起到作用,而且自动生成的程序可能不是自己想要的,所以需要进行一些自定义的配置:
可以看到,Output Path 中有几个属性,分别解释一下
${SOURCEPATH} 原类的路径,就是你自己写的类
${PACKAGE} 原类的包名,java包命名规范就是按照包名一级一级创建文件夹的嘛
${filename} 测试类的类名
所以 Output Path 就简单明了了
默认的是${SOURCEPATH}/…/…/test/java/${PACKAGE}/${FILENAME} 即项目路径下的test/java文件夹下。这样不行,要改成自己的。
我希望我的项目中有一个junit的包 专门存放测试类,便写成了${SOURCEPATH}/Junit/${PACKAGE}/${FILENAME}
然后再修改 Junit4 选项卡中包的申明,把默认的 test 前缀改成我想要的Junit;注释改为我的注释。其他的东西以此类推,日后有需要可以自行修改。
不要忘记修改包名和注释的相关信息。这里的包名要和前面output path相对应(package 后的位置要和java文件的保存位置一致。),不然程序会报错
调出generate 点击JUnit Test-Junit4,便生成了我独特的测试类。这个测试类因为有上图的模板加以控制,并且可以自定义我的代码,展现得会比之前没按插件的时候更完备:
在测试类里重写方法之后,点方法或者类名左边的测试按钮,便可进行单个方法或者整个测试类的测试。
注解的意思:
-
@Test:测试该方法
- @Test(expected=XXException.class) 表示测试结果是否等于该异常
- @Test(timeout=xxx)表示测试是否在该时间内完成
-
@Ignore:该方法不测试
-
@Before:在测试方法运行前,运行该方法
- 主要用于测试(方法)前的准备工作
如实例化对象
- 主要用于测试(方法)前的准备工作
-
@After:在测试方法运行后,运行该方法
- 主要用于测试(方法)后的收尾工作
如销毁对象
- 主要用于测试(方法)后的收尾工作
-
@BeforeClass:在 @Before注解方法之前运行
- 该注解的方式必须是静态的(static),因为是在类初始化之前需要先加载该方法
- 主要用于测试(类)前的准备工作
如加载配置文件,建立数据库连接等
-
@AfterClass:在 @After注解方法之后运行
- 该注解的方式必须是静态的(static),因为是在类初始化之前需要先加载该方法
- 主要用于测试(类)后的准备工作
如关闭数据库连接等
————————————————
版权声明:本文为CSDN博主「aiunng」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aiunng/article/details/89046224
JUnit一个测试类中的测试方法的执行顺序:
Test类中的Test方法是随机的,但可以指定
——按设计,JUnit并不指定测试方法调用的执行顺序。到目前为止,测试方法只是简单地按照反射API返回的顺序被调用。然而,由于Java平台并没有指定特定的顺序,使用JVM顺序并不明智。实际上,JDK 7返回的几乎是随机顺序。当然,好的测试代码并不会假定任何的执行顺序, 但是也有些会。并且,在特定的平台上,一个可预见的失败要好于随机的失败。
——从4.1.1版本开始,JUnit默认会使用一个确定的,但不可预知的顺序(MethodSorters.DEFAULT)。可以通过给你的测试类添加注解@FixMethodOrder来改变这个执行顺序,可以在下面可选的MethodSorter中任意指定一个:
@FixMethodOrder(MethodSorters.JVM): 使用JVM返回的顺序,这个顺序可能每次执行都不一样
@FixMethodOrder(MethodSorters.NAME_ASCENDING): Sorts the test methods by method name, in lexicographic order.
通过方法名每个字母的词典顺序排序,下面是举例:
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestMethodOrder {
@Test
public void testA() {
System.out.println("first");
}
@Test
public void testB() {
System.out.println("second");
}
@Test
public void testC() {
System.out.println("third");
}
}
以上代码将按照测试方法名称升序排列的顺序执行这些测试方法。
————————————————
版权声明:本文为CSDN博主「林雨心情」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/linyuxinqing/article/details/79639969