【JUnit测试】总结 (2)

运行结果:

【JUnit测试】总结

隐藏的固定代码:

@BeforeClass 修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它,而且在内存中它只会存在一份实例,它比较适合加载配置文件以及一些只用加载一次的东西。

@AfterClass 所修饰的方法通常用来堆资源的清理,如关闭数据库的连接

@Before 和 @After 会在每个测试方法的前后各执行一次。

这些都是固定代码,运行时一定会被执行

常用注释:

@Test:将一个普通的方法修饰成为一个测试方法

@Test(expected=XX.class)

@Test(timeout=毫秒)

-@BeforeClass:它会在所有的方法运行前被执行,static 修饰
-@AfterClass:它会在所有的方法运行结束后被执行,static 修饰

@Before:会在每一个测试方法被运行前执行一次

@After:会在每一个测试方法运行后被执行一次

@Ignore:所修饰的测试方法会被测试运行器忽略

@RunWith:可以更改测试运行器(如想自定义测试运行器可继承 org.junit.runner.Runner)
可以配合测试套件使用。

测试套件

测试套件:可以组织测试类一起运行。

写一个作为测试套件的入口类,这个类里不包含其他的方法

更改测试运行器为 @RunWith(Suite.class)

将要测试的类作为数组传入到 @Suite.SuiteClasses({A,B,...})

演示代码:

package com.imooc.util; import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class}) public class SuiteTest { /* * 1.测试套件就是组织测试类一起运行的 * * 写一个作为测试套件的入口类,这个类里不包含其他的方法 * 更改测试运行器Suite.class * 将要测试的类作为数组传入到Suite.SuiteClasses({}) */ }

这段代码可以将 TaskTest1、2、3 同时运行测试。从而达到测试套件的效果。

参数化设置

更改默认的测试运行器为 @RunWith(Parameterized.class)

声明变量来存放预期值和结果值

声明一个返回值为 Collection<> 的公共静态方法,并使用 @Parameters 进行修饰

为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值

编写测试方法,使用变量

演示代码:

package com.imooc.util; import static org.junit.Assert.*; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class ParameterTest { /* * 1.更改默认的测试运行器为RunWith(Parameterized.class) * 2.声明变量来存放预期值 和结果值 * 3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰 * 4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值 */ int expected = 0;//预期值 int input1 = 0;//输入值1 int input2 = 0;//输入值2 @Parameters //可以将返回的参数依次放入构造方法中进行测试 public static Collection<Object[]> t() { return Arrays.asList(new Object[][]{ {3,1,2},//预期值,输入值1,输入值2 {4,2,2} }) ; } public ParameterTest(int expected,int input1,int input2) { this.expected = expected; this.input1 = input1; this.input2 = input2; } @Test public void testAdd() { assertEquals(expected, new Calculate().add(input1, input2)); } } 在 Spring 中进行测试

Spring 配置文件

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <bean> <property value="classpath:hibernate.cfg.xml"/> </bean> <bean/> </beans>

Spring 测试代码

package com.imooc.conform; import java.util.Date; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { private static ApplicationContext context = null; @BeforeClass public static void setUpBeforeClass() throws Exception { context = new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void test() { Date date = (Date) context.getBean("date"); System.out.println(date); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppjff.html