0

Spring 3.1.1、DBunit 2.4.9、JUnit 4.10、休止状態 4.1.4 を使用しています。

いくつかのテストを作成する際に問題が発生しました。クラスの 1 つで、再帰的な構成に null 値があります。

@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 に答える