`

JUnit4操作步骤及注意事项

 
阅读更多
使用jUnit4的操作步骤及注意事项:
1.为项目导入Junit的jar包(Build path -> Add Library ->Junit)。
2.新建一个名为Test的Source Folder,用于存放测试类源代码。
3.目标类与测试类应该位于同一个报下面,这样测试类中就不必导入源代码所在的包,因为他们位于用一个包下面。
4.Junit4并不需要测试类继承TestCase父类。
5.在一个测试类中,所有被@Test注解所修饰的public void方法都是testCase(测试用例),可以被Junit所执行。
6.规范:虽然Junit4并不要求测试方法名以test开头,但最好还是按照Junit3的要求那样,以test作为测试方法名的开头。
7.在Junit4中,通过@Before注解实现与Junit3中的setUp方法同样的功能。
8.在Junit4中,可以使用@BeforeClass与@AfterClass注解修饰一个public static void no—arg的方法,这样被@beforeClass注解所修饰的方法会在所有测试方法执行前执行。
9.注解@lgnore可用于修饰测试类与测试方法,当修饰测试类时,表示忽略掉类中的所有测试方法;当修饰测试方法时,表示忽略掉该测试方法。
10.参数化测试(Parameters):当一个测试类使用参数化运行器运行时,
     需要在类的声明处加上 @RunWith(Parameterized.class)注解,表示该类将不使用JUnit内建的运行器运行,
     而使用参数化运行器运行;在参数化运行类中提供参数的方法上要使用 @Parameters注解来修饰,
     同时在测试类的构造方法中为各个参数赋值(构造方法是由JUnit 调用的),
     最后编写测试类,它会根据参数的组数来运行测试多次。
11.在JUnit4中,如果想要同时运行多个测试,需要使用两个注解:
     @RunWith(Suite.class)以及 @Suite.SuiteClasses(),通过这两个注解分别指定使用Suite运行器来运行测试,
     以及指定了运行哪些测试类,其中的 @SuiteClasses中可以继续指定Suite,这样JUnit会再去寻找里面的测试类,
     一直找到能够执行的TestCase并执行之。
12.JUnit4中可以使用JUnit3的方法进行测试,而不使用注解机制,即JUnit3可以完美升级至JUnit4,但4更灵活、方便。
 
 Eg:
	 //在所有测试方法前执行一次  
    @BeforeClass  
	//在所有测试方法后执行一次  
    @AfterClass
	//在每个测试方法前执行  
    @Before 
	//在每个测试方法后执行  
    @After  
	// 测试方法执行超过1000毫秒后算超时,测试将失败  
    @Test(timeout = 1000) 
	// 测试方法期望得到的异常类  
    @Test(expected = Exception.class)  
	// 执行测试时将忽略掉此方法,如果用于修饰类,则忽略整个类  
    @Ignore("not ready yet")  
    @Test 

Eg:简单Junit4测试类。
public class BuyerTest {

	private static BuyerService buyerService;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		try {
			ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
			buyerService = (BuyerService) act.getBean("buyerServiceBean");
		} catch (RuntimeException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}

	@Test
	public void save() {
		System.out.println("测试Spring3.05+JPA(Hibernate3.6)环境");
		for (int i = 0; i < 26; i++) {
			buyerService.save(new Buyer("S7HF" + i, MD5.MD5Encode("123456"),
					"xiangyunzk.net163@.com"));
		}
	}
}

基于Spring注解的方式测试:
首先需要增加org.springframework.test-3.0.5.RELEASE.jar当然junit4.jar必不可少。
首先来一个能够自动回滚的用于测试的父类——AbstractTestCase
package cn.itcast.junit.test;

import org.junit.runner.RunWith;
import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

/**
 * @Title: AbstractTestCase.java
 * @Package: cn.itcast.junit.test
 * @Description: TODO(用一句话描述该文件做什么)
 * @author: 何枫
 * @date: 2012-6-28 下午09:59:36
 * @version: V1.0
 */
@SuppressWarnings("deprecation")
@ContextConfiguration({"classpath:applicationContext.xml","classpath:spring/buyer/applicationContext-service.xml"
	})
	@RunWith(SpringJUnit4ClassRunner.class) //SpringJUnit支持,由此引入Spring—Test框架支持。
	@Transactional //这个非常关键,如果不加入这个注解配置,事务控制就会完全失效
	//这里的事务关联到配置文件中的事务控制器(transactionManager = "transactionManager"),同时指定自动回滚(defaultRollback = true).
	//这样做操作的数据库才不会污染数据库!
	
	@TransactionConfiguration(transactionManager = "transactionManager",defaultRollback = true)
	//AbstractTransactionalDataSourceSpringContextTests要想构建这一系列的无污染纯绿色事务测试框架就必须找到这个基类!
	public abstract class AbstractTestCase extends
		AbstractTransactionalDataSourceSpringContextTests {

}

package cn.itcast.junit.test;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import cn.itcast.bean.QueryResult;
import cn.itcast.bean.user.Buyer;
import cn.itcast.service.buyer.BuyerService;


/**
 * @Title: BuyerSpringtest.java
 * @Package: cn.itcast.junit.test
 * @Description: TODO(用一句话描述该文件做什么)
 * @author: 何枫
 * @date: 2012-6-28 下午10:19:21
 * @version: V1.0
 */
public class BuyerSpringTest extends AbstractTestCase {
	@Autowired
	private BuyerService buyerServiceBean;
	
	@Test
	public void listTest(){
		System.out.println(buyerServiceBean.find(Buyer.class, 19L).toString());
	}
	
	@Test
	public void getScrollDataTotal() {
		QueryResult<Buyer> qr = buyerServiceBean.getScrollData(0, 5);
		System.out.println("总记录数:"+ qr.getTotalRecord());
		for ( Buyer buyer : qr.getResultList()) {
			System.out.println(buyer.getPassword());
		}
	}
}

让每个测试类都写第一种方式那样写一堆配置很麻烦而且足够重复,索性来个基类来完成基础工作!
逐行解析:
@ContextConfiguration({"classpath:applicationContext.xml","classpath:spring/buyer/applicationContext-service.xml"})
导入配置文件,这里我的applicationContext配置文件是根据模块来分类的。如果有多个模块就引入多个“applicationContext-service.xml”文件。如果所有的都是写在“applicationContext。xml”中则这样导入:
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)SpringJUnit支持,由此引入Spring-Test框架支持!
@Transactional这个非常关键,如果不加入这个注解配置,事务控制就会完全失效!
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)这里的事务关联到配置文件中的事务控制器(transactionManager = "transactionManager"),同时指定自动回滚(defaultRollback = true)。这样做操作的数据才不会污染数据库!
AbstractTransactionalDataSourceSpringContextTests要想构建这一系列的无污染纯绿色事务测试框架就必须找到这个基类!
3
0
分享到:
评论

相关推荐

    eclipse中Junit的配置

    #### 三、详细解释与注意事项 - **类路径变量的重要性**:通过创建`JUNIT`和`JUNIT_SRC`变量,可以让Eclipse知道JUnit库的具体位置以及其源代码的位置,这对于编译时的引用以及调试过程都是至关重要的。 - **JUnit...

    junit与selenium集成使用手册

    #### 三、注意事项 - **Classpath 设置**:确保所有必需的库文件都正确添加到了 classpath 中,包括 JUnit 和 Selenium 的 jar 文件。 - **测试类位置**:如果测试类位于 jar 文件中,即使这些 jar 文件已被添加到 ...

    JUnit Ant Eclipse, JUnitReport报告

    标题 "JUnit Ant Eclipse, JUnitReport报告...同时,可能会分享一些最佳实践和注意事项,以帮助开发者更高效地利用这些工具提升开发效率和代码质量。文件名"kker"可能是博客作者或项目的标识,但没有更多信息可供解析。

    junit-dataprovider为JUnit提供一个类似于TestNG的dataproviderrunner

    6. **注意事项** - 数据提供者的方法必须是静态的,并且可见性至少为包级别,以便JUnit能够调用。 - 测试方法的参数类型和数量必须与数据提供者返回的数据匹配。 - 数据提供者方法的名称和@Test注解中的data...

    使用JUnit进行单元测试PPT

    **测试原则与注意事项**: 1. **明确输入和输出**:为不同的输入和边界条件编写测试用例。 2. **可重复性**:测试结果应始终一致,避免出现非确定性。 3. **及时更新测试**:修改代码时,相应更新测试以保持其有效...

    Junit出现InitializationError,原因是少了两个jar包,下载下来导入即可

    4. **阅读readme.txt**:压缩包中的readme.txt文件通常包含有关这些jar包的信息,如版本信息、使用方法或注意事项。确保查看这个文件以获取更多细节,特别是如果有任何特定的安装或配置指南。 在进行单元测试时,...

    ssh项目流程和注意事项

    ### SSH项目流程与注意事项 SSH框架(Struts + Spring + Hibernate)是Java Web开发中非常流行的一种技术组合,它能够高效地实现MVC设计模式,提高开发效率,并保证代码的可维护性和可扩展性。本文将详细介绍SSH...

    junit3.8.1src.zip源代码

    四、最佳实践与注意事项 1. 测试隔离:每个测试方法应独立于其他方法,避免共享状态,以确保测试结果的可重复性。 2. 详尽覆盖:确保测试覆盖所有可能的代码路径,包括边界条件和异常情况。 3. 避免复杂的测试:...

    Ant+JUnit测试报告实际例子

    `readme.txt` 文件通常提供了项目的简要介绍、使用指南或者注意事项,对于初学者来说,这是一个了解项目如何运行的好地方。在这个例子中,可能包含如何配置 Ant 任务、运行测试以及查看测试报告的步骤。 `build.xml...

    JUNIT学习资料

    #### 三、JUnit使用中的注意事项 1. **不要在测试用例的构造函数中做初始化**:应该重载`setUp()`方法来进行初始化。 2. **不要假定测试用例的执行顺序**:为了保证测试的独立性和准确性,应确保每个测试用例都可以...

    Junit_commonly_used_notes.pdf

    - **注意事项**: - 自动生成的测试用例仅包含基本框架,需要进一步完善具体的测试逻辑。 - 应确保每个测试方法都是独立的,不依赖于其他测试方法的结果。 ##### 4.2 执行测试用例 - **方法**: - 在Eclipse中...

    Junit使用实验报告.docx

    **五、测试流程与注意事项** 1. **测试方法设计**:每个测试方法应专注于测试单个功能,避免多个操作混合在一个测试中。 2. **异常处理**:对于可能会抛出异常的情况,使用 try-catch 结构捕获预期异常,确保测试能...

    JUnitinjava单元测试用例实战.pdf

    4. **JUnit测试注意事项**: - 引入`junit.framework.TestCase`和`junit.textui.TestRunner`库。 - 测试类需继承自`TestCase`。 - 添加一个`main`方法,调用`TestRunner.run(测试类名.class)`启动测试。 - 实现...

    parallel-junit:用于并行运行 JUnit 测试的 Ant 任务

    **注意事项** - 并行执行可能会引入一些并发问题,特别是当测试用例之间存在依赖关系时。因此,正确设计和组织测试用例至关重要,避免它们相互干扰。 - 监控资源使用情况,以防止并行执行导致的资源过度消耗。 - ...

    junit-parallel-execution:演示junit并行执行Maven surefire插件的示例项目

    **注意事项** 1. 并行执行可能导致测试之间的依赖关系出现问题,因此最好确保每个测试都是独立的。 2. 大量并行测试可能对系统资源(如CPU和内存)造成压力,应合理设置`threadCount`。 3. 考虑到测试报告的可读性...

    SpringBoot实战:整合jUnit测试框架

    ### 六、注意事项与规范 1. **测试环境隔离**:确保测试不依赖于任何外部环境,比如数据库状态,使用Mockito等工具模拟依赖。 2. **测试用例设计**:每个测试方法应测试一个特定的行为,避免大而全的测试方法。 3. ...

    基于Java的网购系统设计与开发的注意事项.zip

    在开发基于Java的网购系统时,有很多...以上是基于Java的网购系统设计与开发的主要注意事项,这些知识点的掌握和应用对于构建高质量的电商系统至关重要。在实际项目中,还需要根据具体需求和业务场景进行调整和优化。

    JUnitTestSSH-Service层

    6. **readme文件**:提到的readme文件通常包含了项目的介绍、使用说明、注意事项等内容,对于理解测试目标和如何运行测试至关重要。 7. **持续集成/持续部署(CI/CD)**:在开发过程中,单元测试通常会集成到CI/CD...

Global site tag (gtag.js) - Google Analytics