配置:右键要加入单元测试的工程,选择properties,然后选择java build path,选择add library,选择junit即可。

编写:右键要测试的class,new一个junit test case,更改其source folder,next之后可选择要测试的class中的要测试的方法,则可自动生成。

运行:右键要运行单元测试的class,选择junit即可。

测试套件测试:

1.测试套件就是组织测试类一起运行的。

2.写一个作为测试套件的入口类,这个类里不包含其他的方法,更改测试运行器Suite.class,将要测试的类作为数组传入到Suite.SuiteClasses({}),即如下图:

参数化设置测试:

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

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

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

4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值。示例代码如下图:

注意:

1.单元测试代码最好与业务代码分开,对于每一个要测试的class,所生成的单元测试的class,两者包名要保持一致。

2.测试方法必须用@Test进行修饰。

3.测试方法必须使用public void进行修饰,不能带任何参数。

4.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖。

5.测试类最好使用Test作为类名的后缀。

6.测试方法最好使用test作为方法名的前缀。

流程点:

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

2.@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的链接。

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

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

5.@RunWith可以更改测试运行器

UnitTestBase的写入:

 public class UnitTestBase {
private ClassPathXmlApplicationContext context;
private String springXmlpath;
public UnitTestBase() {}; public UnitTestBase(String springXmlpath) {
this.springXmlpath = springXmlpath;
} @Before
public void before() {
if(StringUtils.isEmpty(springXmlpath)) {
springXmlpath = "classpath*:spring-*.xml";//配置文件路径通过构造函数传入,
}
try {
context = new ClassPathXmlApplicationContext(springXmlpath.split("[,\\s]+"));//创建spring的容器context
context.start();//启动后查找配置文件里面配置的信息,并解析这些文件,然后装载到spring的上下文,即context里,
} catch(BeansException e) {
e.printStackTrace();
}
} @After
public void after() {
context.destroy();
} @SuppressWarnings("unchecked")
protected <T extends Object> T getBean(String beanId) {
return (T)context.getBean(beanId);//通过getBean方法获取相应的对象,而这里的beanId即是子类中传入的oneInterface,也在spring-ioc.xml文件中配置过的bean
} protected <T extends Object> T getBean(Class<T> clazz) {
return context.getBean(clazz);
} }

@Before也就是执行之前的内容,先加载配置文件,而配置文件的路径,从UnitTestBase的子类中通过构造方法获取,这里的classpath*:spring-*.xml是匹配所有以spring-开头的xml文件。创建Spring的容器,这里也就是context,当其启动后,会查找配置文件中的信息,并将信息加载到context容器中,当要使用这些信息时,可以用getBean方法获取到相应的对象,其中getBean的参数名称应该是xml中配置过的对象名称,这里也就是injectionService,这里不能直接get到injectionDao,至于原因?还未解。。。而getBean相对于new最大的好处就是,不用每次要用到某个对象的时候都去创建,而是直接获取就好了,而且如果当前这个bean对应的A类要换成B类,也比较方便。

UnitTestBase的子类的写入:

 @RunWith(BlockJUnit4ClassRunner.class)
public class TestOneInterface extends UnitTestBase { public TestOneInterface() {
super("classpath*:spring-ioc.xml");
} @Test
public void test() {
OneInterface oneIn = super.getBean("oneInterface");
System.out.println(oneIn.hello("my parameters..."));
} }

junit单元测试+junit与Spring结合的更多相关文章

  1. spring && Cobertura && maven &&junit 单元测试以及测试覆盖率

    1. 目的:       junit 单元测试,Cobertura   测试覆盖率报告       项目目录结构          2. maven 配置     <project xmlns= ...

  2. Spring框架中整合JUnit单元测试的方法

    一. 步骤: 1. 拷贝jar包: 1. JUnit-4.9.jar和spring-test-4.2.4.RELEASE.jar ; 2. 替换原来的main函数: 1. 在测试类上使用注解方式替换: ...

  3. spring框架学习(三)junit单元测试

    spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学 ...

  4. Spring完全基于Java配置和集成Junit单元测试

    要点: 配置继承WebApplicationInitializer的类作为启动类,相当于配置web.xml文件 使用@Configuration注解一个类,在类中的方式使用@Bean注解,则表名该方法 ...

  5. Spring注解AOP及单元测试junit(6)

    2019-03-10/20:19:56 演示:将xml配置方式改为注解方式 静态以及动态代理推荐博客:https://blog.csdn.net/javazejian/article/details/ ...

  6. Spring Boot(十二)单元测试JUnit

    一.介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试. 白盒测 ...

  7. Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)

    参考自 https://www.cnblogs.com/ltfxy/p/9882430.html 创建web项目,引入jar包 除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个 ...

  8. Spring集成JUnit单元测试框架

    一.JUnit介绍 JUnit是Java中最有名的单元测试框架,用于编写和运行可重复的测试,多数Java的开发环境都已经集成了JUnit作为单元测试的工具.好的单元测试能极大的提高开发效率和代码质量. ...

  9. 学习 Spring Boot:(二十九)Spring Boot Junit 单元测试

    前言 JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量. JUnit 测试框架具有以下重要特性: 测试工具 测试套件 测试运行器 测试分类 了 ...

随机推荐

  1. LeetCode - 67. Add Binary(4ms)

    Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...

  2. linux备忘录-shell脚本

    知识 shell执行方式 shell执行方式有 通过source或. 在现在的bash环境中执行脚本 变量等会保持 通过bash shell.sh或sh shell.sh 使用一个新的bash环境执行 ...

  3. 爬虫:Scrapy17 - Common Practices

    在脚本中运行 Scrapy 除了常用的 scrapy crawl 来启动 Scrapy,也可以使用 API 在脚本中启动 Scrapy. 需要注意的是,Scrapy 是在 Twisted 异步网络库上 ...

  4. maven环境变的配置(复制自己看)

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具.由于 Maven 的缺省构建 ...

  5. 【Python】python中的装饰器——@

    对装饰器本来就一知半解的,今天终于弄清楚了,Python中的装饰器是对装饰者模式的很好运用,简化到骨子里了. python中为什么需要装饰器,看这里:http://www.cnblogs.com/hu ...

  6. 下拉框select chosen被遮盖

    最简单的就是让容器高度大点. 用js调整也行. 为什么z-index不管事,看下面... 浏览器支持 所有主流浏览器都支持 z-index 属性. 注释:任何的版本的 Internet Explore ...

  7. incorrect integer value for column 问题解决

    最近在用zend框架,然后装了一个项目,发现注册的时候出现 General error: 1366 Incorrect integer value: '' for column 'user_id' a ...

  8. 自定义 Relam

    package org.zln.hello.realm; import org.apache.shiro.authc.*; import org.apache.shiro.realm.Realm; / ...

  9. zTree删除节点

    zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. zTree删除节点. <!DOCTYPE html> &l ...

  10. 【题解】ZJOI2010贪吃的老鼠

    %%%%真的好强...看题解我都看了好久才完全明白.放一下参考的博客,谢谢神犇QAQ 1号博客    2号博客(超级赞的啦) 因为理解的过程太艰辛,所以必须记录一下这道强题:这道题目最难的两个约束就在 ...