我使用的是Spring 3.1.1,DBunit 2.4.9,JUnit 4.10,hibernate 4.1.4。
我遇到了构建一些测试的问题。我的班级中有一个反身作文的空值:
@Entity
public class UserStep {
private long id;
private long version;
private String code;
private int stepOrder;
private boolean activate;
@OneToOne
@JoinColumn(referencedColumnName="stepOrder")
private UserStep nextStep;
//setter & getter...
}
最简单的测试指出了问题:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/testApplicationContext.xml")
//AbstractTest contains methods which setup the db
public class CommonUserStepServiceTest extends AbstractTest {
@Test
public void goToPreviousUserStep_firstInstallation_NotFirstUserStep() {
List<UserStep> findAll = userStepDAO.findAll();
//I have 7 occurrences with correct label
//but null value for each UserStep.nextStep
}
用于加载事件的最简单的xml文件:
<userStep id="7" activate="true" version="0" stepOrder="210" label="na" />
<userStep id="6" activate="true" version="0" stepOrder="60" label="end" />
<userStep id="5" activate="true" version="0" stepOrder="50" label="5" nextStep_stepOrder="60"/>
<userStep id="4" activate="true" version="0" stepOrder="40" label="4" nextStep_stepOrder="50"/>
<userStep id="3" activate="true" version="0" stepOrder="30" label="3" nextStep_stepOrder="40"/>
<userStep id="2" activate="true" version="0" stepOrder="20" label="2" nextStep_stepOrder="30"/>
<userStep id="1" activate="true" version="0" stepOrder="10" label="begin" nextStep_stepOrder="20"/>
将一些事件加载到我的测试中,在此过程中没有错误。 当我尝试访问nextStep属性时,我得到了null值,我无法找出原因。有人可以帮忙吗? 我有其他测试,使用UserStep表,他们工作(但我不尝试访问其中的nextStep属性)
答案 0 :(得分:0)
问题来自我在xml文件中出现的情况。解析器缺少nextStep_stepOrder属性,因为它使用它找到的第一个匹配项来确定所有列。
解决方案是将setColumnSensing(true)
添加到FlatXmlDataSetBuilder中,以便动态添加所有列。