JUnit4 知识小结 java单元测试——JUnit4 JUnit是一个简单的框架,用于编写可重复的测试。它是单元测试框架的xUnit架构的一个实例。
package com.imooc.util; import static org.junit.Assert.*; import org.junit.Test; public class CalculateTest { /* * 1.测试方法上必须使用@Test进行修饰 * 2.测试方法必须使用public void 进行修饰,不能带任何的参数 * 3.新建一个源代码目录来存放我们的测试代码 * 4.测试类的包应该和被测试类保持一致 * 5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖 * 6.测试类使用Test作为类名的后缀(不是必须) * 7.测试方法使用test作为方法名的前缀(不是必须) */› @Test public void testAdd() { assertEquals(6, new Calculate().add(3,3)); } @Test public void testSubtract() { assertEquals(3, new Calculate().subtract(5,2)); } @Test public void testMultiply() { assertEquals(4, new Calculate().multiply(2, 2)); } @Test public void testDivide() { assertEquals(3, new Calculate().divide(6, 2)); } }
 { assertEquals(5, new Calculate().add(3,3)); } @Test public void testDivide() { assertEquals(3, new Calculate().divide(6, 0)); } }里写图片描述](https://img-blog.csdn.net/20170311023650312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUm9ja3lfWmhhbmcxOTkz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
package com.imooc.util; import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; public class JunitFlowTest { /* * 1.@BeforeClass修饰的方法会在所有方法被调用前被执行, * 而且该方法是静态的,所以当测试类被加载后接着就会运行它, * 而且在内存中它只会存在一份实例,它比较适合加载配置文件。 * 2.@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接 * 3.@Before和@After会在每个测试方法的前后各执行一次。 */ @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("this is beforeClass..."); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("this is afterClass..."); } @Before public void setUp() throws Exception { System.out.println("this is before..."); } @After public void tearDown() throws Exception { System.out.println("this is after"); } @Test public void test1() { System.out.println("this is test1..."); } @Test public void test2(){ System.out.println("this is test2..."); } } package com.imooc.util; import static org.junit.Assert.assertEquals; import org.junit.Ignore; import org.junit.Test; public class AnotationTest { /* * @Test:将一个普通的方法修饰成为一个测试方法 * @Test(expected=XX.class) * @Test(timeout=毫秒 ) * @BeforeClass:它会在所有的方法运行前被执行,static修饰 * @AfterClass:它会在所有的方法运行结束后被执行,static修饰 * @Before:会在每一个测试方法被运行前执行一次 * @After:会在每一个测试方法运行后被执行一次 * @Ignore:所修饰的测试方法会被测试运行器忽略 * @RunWith:可以更改测试运行器 org.junit.runner.Runner */ @Test(expected=ArithmeticException.class) public void testDivide() { assertEquals(3, new Calculate().divide(6, 0)); } @Ignore("...") @Test(timeout=2000) public void testWhile() { while(true) { System.out.println("run forever..."); } } @Test(timeout=3000) public void testReadFile(){ try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 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({}) */ } 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.声明一 静态方法,并使用@Parameters进行修饰 * 4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值 */ int expected =0; int input1 = 0; int input2 = 0; @Parameters public static Collection<Object[]> t() { return Arrays.asList(new Object[][]{ {3,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)); } }<?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 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> </bean> <bean id="date" class="java.util.Date"/> </beans> <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/mytest</property> <property name="connection.username">root</property> <property name="connection.password">mysql</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="myeclipse.connection.profile">com.mysql.jdbc.Driver</property> </session-factory> </hibernate-configuration>
package com.imooc.conform;
import org.hibernate.Session; import org.junit.Test; public class HibernateTest { @Test public void test() { Session session = HibernateSessionFactory.getSession(); System.out.println(session); } } 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); } }package com.imooc.conform;
import static org.junit.Assert.*; import org.hibernate.impl.SessionFactoryImpl; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringAndHibernate { private static ApplicationContext context; @BeforeClass public static void setUpBeforeClass() throws Exception { context = new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void test() { SessionFactoryImpl bean = (SessionFactoryImpl) context.getBean("sessionFactory"); System.out.println(bean); } } package com.imooc.conform; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */ public class HibernateSessionFactory { /** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current session. */ private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static Configuration configuration = new Configuration(); private static org.hibernate.SessionFactory sessionFactory; private static String configFile = CONFIG_FILE_LOCATION; static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize * the <code>SessionFactory</code> if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } } 相关资源:微信小程序源码-合集1.rar