在Spring中,在对象上运行一堆测试方法但在每次新测试方法调用之前重置/重新注入对象的最佳方式是什么? 我曾尝试在下面的代码,但我目前的逻辑做对象被创建,仅注射一次..弹簧单元测试和对象重新注入
package com.bidtracker;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.is;
import com.bidtracker.iface.BidTracker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class BidTrackerTest {
@Autowired
BidTracker tracker;
@Test
public void shouldReturnHighestBidAmount1(){
tracker.bidOnItem("itemB", "user1", 105);
assertThat(tracker.getHighestBid("itemB").getAmount(),is(Integer.valueOf(105)));
}
@Test
public void shouldReturnHighestBidAmount2(){
tracker.bidOnItem("itemB", "user1", 39);
tracker.bidOnItem("itemB", "user1", 50);
assertThat(tracker.getHighestBid("itemB").getAmount(),is(Integer.valueOf(50)));
}
}
谢谢你解决了我的问题。然而,我很好奇,Spring是否认为这种测试公式不好(脏)? – jule64
我认为没关系,从头开始创建应用程序上下文代价很高,这就是为什么Spring测试倾向于跨越测试缓存它的原因(如果套件中有多个测试类使用相同的上下文,它将被重用整个套房)。但是,如果绝对需要重新创建上下文,@DirtiesContext的选项始终存在:-) –