注:
以下笔记资料来源于各种网页 + 本人实操的理解.
如发现错误可以指出.引用网页资料的链接会放在下方
计科一
忘记复制网址了
一、IDEA下环境配置
Eclipse的我没用不知道,自行百度
使用idea IDE 进行单元测试,首先需要安装JUnit 插件。
1.安装JUnit插件步骤
File-->settings-->Plguins-->Browse repositories-->输入JUnit-->选择JUnit Generator V2.0安装。
2.使用JUnit插件
在需要进行单元测试的类中,使用快捷键alt+insert,选择JUnit test,选择JUnit4。
单元测试
Test
public void testAdd() {
assertEquals(2, new UserDao().add(1, 1));
}
注意事项:
1、测试方法上面必须使用@Test注解进行修饰。
2、测试方法必须使用public void 进行修饰,不能带有任何参数。
3、新建一个源代码目录用来存放测试代码。
4、测试类的包应该与被测试类的包保持一致。
5、测试单元中的每一个方法必须独立测试,每个测试方法之间不能有依赖。
6、测试类使用Test做为类名的后缀(非必要)。
7、测试方法使用test作为方法名的前缀(非必要)。
错误解析
1、Failure 一般是单元测试使用的断言方法判断失败引起,说明预期结果和程序运行结果不一致。
2、error 是有代码异常引起的,他产生于测试代码本身中的Bug。
3、测试用例是不是用来证明你是对的,而是用来证明你没有错。
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void setUpAfterClass() throws Exception {
}
@Before
public void before() throws Exception {
}
@After
public void after() throws Exception {
}
1、@BeforeClass所修饰的方法在所有方法加载前执行,而且他是静态的在类加载后就会执行该方法,在内存中只有一份实例,适合用来加载配置文件。
2、@AfterClass所修饰的方法在所有方法执行完毕之后执行,通常用来进行资源清理,例如关闭数据库连接。3、@Before和@After在每个测试方法执行前都会执行一次。
常用注解
1、@Test(excepted=XX.class) 在运行时忽略某个异常。
2、@Test(timeout=毫秒) 允许程序运行的时间。
3、@Ignore 所修饰的方法被测试器忽略。
4、RunWith 可以修改测试运行器 org.junit.runner.Runner
套件测试
如果你有好多类要一起测试就可以使用套件测试
测试套件的写法需要遵守一下原则:
- 创建一个空类作为测试套件的入口。
- 使用 注释org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 来修饰这个空类。
- 将org.junit.runners.Suite作为参数传入给注释RunWith。 @RunWith(Suite.class)
- 将 测试的类组成数组,作为注释SuiteClass的参数 @SuiteClasses({test1.class,test2.class})
- 定义的空类,使用public 修饰,而且存在公开的不带任何参数的构造函数
/*套件测试.class*/
package com.junit4.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({TTest.class,TTest2.class})
public class TestAll {
}
------------------------
/*TTest.class*/
package com.junit4.Test;
import org.junit.Test;
import static org.junit.Assert.*;
public class TTest {
@Test
public void add() {
assertEquals(2, new T().add(1, 1));
}
@Test
public void divide() {
}
}
------------------------
/*TTest2.class
懒得写两份就复制了TTest的*/
package com.junit4.Test;
import org.junit.Test;
import static org.junit.Assert.*;
public class TTest2 {
@Test
public void add() {
assertEquals(2, new T().add(1, 1));
}
@Test
public void divide() {
}
}
输出结果