作为测试驱动开发的初学者,我刚遇到一个问题。我的测试课程开始如下:弹簧独立JUnit测试@Autowired
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@DirtiesContext
@ContextConfiguration(locations = {"/web-test.xml"})
public class XXTest {
@Autowired
XX xx;
@Autowired
HibernateTemplate template;
@Test
public void testSetGetXXValue() throws Exception {
final Map<String, YY> profilMap = new HashMap<String, YY>(2);
profilMap.put("1", new YY());
profilMap.put("2", new YY());
simpleCockpit.setValues(profilMap);
assertEquals(profilMap, simpleCockpit.getValues());
}
正如您所看到的,第一种测试方法会改变自动装配的XX级。这会影响所有以下测试方法,这些测试方法依赖于具有自动布线值的XX。
如何从XX测试getter和setter并确保XX具有其余测试方法的自动装配值?
思想:
- 在测试方法结束复位右值。不好,因为如果getter/setter不工作,这也不起作用。
- 将第一个测试方法放在测试类的末尾。不好,因为这会使测试依赖于它们的执行顺序。
- 不要测试XX的getter/setter。不好,因为getter/setter必须像每种方法一样进行测试。
谢谢你的答案!我真的很肯定这有一个简单的解决方案... :)
编辑:关于问题的单元测试getter/setter方法或不是是否,我决定这样主要是因为原因statet在http://www.sundog.net/sunblog/posts/should-we-test-getters-and-setters/做。
@DirtiesContext正是我所期待的。谢谢。 我想自动装配这个bean,因为它是从数据库提供测试数据的DAO。 – Steven