Junit:
是一个Java的单元测试框架,主流IDE都集成了Junit,例如Eclipser和IDEA,Junit测试属于白盒测试。
前置技能:
Java
Getting Started
1、导入Junit和快速生成测试方法
2、demo
先写两个个简单的方法
public class MyFunction {
//一个会对你说hello的方法
public String hello(String name) {
return "hello "+name;
}
//一个会做除法的方法
public int divide(int divident,int dividor) {
return divident/dividor;
}
}
在生成的测试类方法中填写逻辑
按照逻辑,我们输入world,hello()
方法应该返回hello world
我们输入8和4,divide()
方法应该返回2
class MyFunctionTest {
@Test
void testHello() {
//assertEquals(预测应该返回的值,实际程序返回的值)
assertEquals("hello world",new MyFunction().hello("world"));
}
@Test
void testDivide() {
//我预期8/4的结果为2,但我断言它为4!
assertEquals(4, new MyFunction().divide(8, 4));
}
断言assert
用于比较期望值和实际值,若测试失败,Assert类抛出一个AssertionFailedError异常。
运行结果面板
如果用0做divide()
方法的被除数,就能看到异常。
3、按照顺序执行测试方法
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
注解 按方法名顺序执行
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyFunctionTest {
@Test
public void test3() {
System.out.println("———3—");
}
@Test
public void test2() {
System.out.println("———2—");
}
@Test
public void test1() {
System.out.println("———1—");
}
}
运行结果
*3.1、可能遇到的问题
如果发现你没有加@FixMethodOrder(MethodSorters.NAME_ASCENDING)
注解,但是方法也按照名顺序排序了;
或是你的Test不支持@Before
@After
等注解;
你可能是导错了包,我们通常用的Test在import org.junit.Test;
包下。
本教程使用的 支持before、after等注解
import org.junit.Test
但快速生成测试方法类,使用的是这个包下的
import org.junit.jupiter.api.Test;
4、顺序注解
@Before
在每个测试方法执行前,执行一次。
@After
在每个测试方法执行后,执行一次。
@BeforeClass,
在类开始运行时,执行一次。
@AfterClass
在类结束运行时,执行一次。
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestJunit {
@Before
public void before() {
System.out.println("———before———");
}
@After
public void after() {
System.out.println("———after———");
}
@BeforeClass
public static void beforeClass() {
System.out.println("———beforeClass———");
}
@AfterClass
public static void afterClass() {
System.out.println("———afterClass———");
}
@Test
public void test2() {
System.out.println("———测试方法2—");
}
@Test
public void test1() {
System.out.println("———测试方法1—");
}
}
运行结果
静态代码块和beforeClass到底谁快?
是我静态代码块比较快哒!
5、Spring+Junit
在测试类里,可以自动读取applicationContext.xml
设置文件,为依赖注入的对象赋值。
@RunWith(SpringJUnit4ClassRunner.class)//用来加载spring配置
@ContextConfiguration("classpath:applicationContext.xml")//classpath:表示从根路径查找xml文件
class DaoImplTest {
@Autowired //注解 依赖注入
private Dao dao;
@Test
void testSelect() {
String result =dao.select(10086);
System.out.println(result);
}
}
运行结果