当JUnit遇到Parameterized和SpringJUnit4ClassRunner

1 篇文章 0 订阅

如题,

最近在研究Junit 4 的用法,因为最近有个Spring  的项目即将启动,当然项目启动必然需要测试,本想反正测试框架是要搭建的,索性在开发之前先研究一下Junit4 。

当然JUnit 4 增加了不少功能,参数化测试,还有个Rule的问题,这些在官方教程都有,所以也都不是难题。

大家都是到Spring有自己的Runner,SpringJUnit4ClassRunner 继承自BlockJUnit4ClassRunner,如果想测试Spring的东西只要在测试用例前加上注解,如下就行了

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = { "classpath:/config/*.xml" })

public class TestCase{

}


当然如果想参数化测试就在测试类前加注解,然后进行一番教程般的配置就OK,如下

@RunWith(Parameterized.class)

public class TestCase{

}

估计各位已经看到问题所在了,上源码

public interface RunWith extends Annotation {
public abstract Class value();
}

RunWith 这个注解可是不支持2个参数啊SpringJUnit4ClassRunner,Parameterized,任选其一可达不到我们的要求啊

于是乎莫非不能共存,不该啊。。。

估计 Spring这么大名鼎鼎的框架这点都没有考虑到,不该啊,

只是看看Spring的测试包,忽然发现有这么一个东东,  org.springframework.test.context.TestContextManager

豁然开朗啊。。。。

上代码,

//@RunWith(SpringJUnit4ClassRunner.class)
@RunWith(Parameterized.class)
@ContextConfiguration(locations = { "classpath:/config/*.xml" })
public class TestCase{
protected final Log logger = LogFactory.getLog(getClass());

private TestContextManager testContextManager;
@Before
    public void setUpContext() throws Exception {
       //仔细看这里 哈哈被你法发现了,spring Runner 不就是做的这个工作嘛。。。。。
        this.testContextManager = new TestContextManager(getClass());
        this.testContextManager.prepareTestInstance(this);
    }
 
@Test
public void test(){}

//关于参数化配置的代码就忽略了

}


PS,高兴之余细看这代码还是有问题的,TestContextManager 这个东东每次都要被初始化一次,不过好像不能移动到@BeforeClass 毕竟我对TestContextManager 理解不够深,如果可以再次改造请留言


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值