0

我正在使用 Spring 3.1.1、DBunit 2.4.9、JUnit 4.10、休眠 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 属性)

4

1 回答 1

0

问题来自我在我的 xml 文件中的事件组织。解析器缺少 nextStep_stepOrder 属性,因为它使用找到的第一个匹配项来确定所有列。

解决方案是添加setColumnSensing(true)到 FlatXmlDataSetBuilder 以动态添加所有列。

于 2013-08-07T12:44:57.783 回答