您的位置:首页 > 编程语言 > Java开发

spring+junit+eclemma完成单元测试

2015-08-04 13:58 405 查看

1.需事先将eclemma插件安装好
2.准备jar包
<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.9</version>

</dependency>
3.编写测试类
3.1定义一个父类加载ApplicationContext对象
<pre class="java" name="code">@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/applicationContext.xml"})
//如果是classes下面的配置文件需写成"classpath:applicationContext.xml"
public class BaseSpringTest extends AbstractJUnit4SpringContextTests {

public <T> T getBean(Class<T> type) {
return applicationContext.getBean(type);
}

public Object getBean(String beanName) {
return applicationContext.getBean(beanName);
}

protected ApplicationContext getContext() {
return applicationContext;
}

}



3.2编写子类测试具体的服务代码
<pre class="java" name="code">public class TestProcessor extends BaseSpringTest {

@Resource
private ReviewProcessor reviewProcessor;

@Test
public void testExecuteReview() {
String rxOrder = "{\"patAllergys\":[\"allergy0\",\"allergy1\"],\"patDiags\":[\"diseaseIds0\",\"diseaseIds1\"],\"patDrugs\":[{\"drugNo\":\"drugIds0\"},{\"drugNo\":\"drugIds1\"}],\"patIsPreg\":1,\"patLiver\":\"肝功能状态\",\"patNursing\":0,\"patPregDays\":36,\"patWeight\":-1,\"patkidney\":\"肾功能状态\"}";
String alertContList = "[{\"alertCode\":\"C_15\",\"alertLevel\":[\"1\"]},{\"alertCode\":\"C_16\",\"alertLevel\":[\"1\"]}]";
try {
RxOrder prxOrder = JsonUtil.getObject(rxOrder,new TypeReference<RxOrder>() {});
List<AlertCont> paConts = JsonUtil.getObject(alertContList,new TypeReference<List<AlertCont>>() {});
reviewProcessor.executeReview(prxOrder, paConts);
} catch (PsException e) {
System.out.println("规则引擎发生异常");
} catch (Exception e) {
System.out.println("输入对象转换发生异常");
}
}

@Test
public void test(){
String s = ";abc;abc";
int i = (int)(1+Math.random()*(10-1+1));
if(i % 2 == 0){
System.out.println(s.replaceFirst(";", ""));
}else{
System.out.println(s.substring(";".length()));
}

}
}




4.开始测试
4.1右键-->coverage as-->junit test



4.2运行结束之后的代码将会被不同的颜色覆盖,如下图所示:红色代表测试没有覆盖到该行,黄色表示部分覆盖,绿色的行表示该行在本次测试中被覆盖到



4.3当前工程代码的覆盖率情况在coverage窗口中可以看到,如下图所示:



4.4当天如果没有完成单元测试工作,可将当前的覆盖情况生成临时文件保存起来,下次启动eclipse时在导入,如下图所示:







4.5导入上次的覆盖结果







5.生成报告,当单元测试工作完成之后,则可生成测试报告,报告文件包含以下内容:







6.打开报告,可查看代码的具体覆盖情况



至此:单元测试工作基本完成,但需要注意的是,测试的时候切记不要为了跑覆盖率而做一些不合理的测试案例,需要对覆盖率情况做合理的分析。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: