2016-07-14 1 views
2

を持たずにJUnitテストでセッターを使用して、私は(クラスを単純化)idnameFooという名前のエンティティを持っているとしましょう:私のアプリケーションでは、クラス内の1つの

public class Foo { 

    private long id; 
    private String name; 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public long getId() { 
     return id; 
    } 
} 

私がすることを望んでいませんidは手動でどこにでも設定されます。 fooはDBから来るだけなので。だから私はそれのためのセッターを作成していない。

今私は、JUnitテストで、インスタンス化したいメソッドをfooにしたいと思っています。 JUnitテスト用にidを設定する可能性はありますか?

P .:可能な解決策は、最初にDBからfooを受け取り、テストを行うことです。しかし、DBコールを避けたい。知りたい場合はSpringjpaを使用しています。

+2

'ReflectionTestUtils.setField(FOO、 "ID"、1L);'そのような何か。 –

+0

jaを使用してデータを受け取る場合にもセッターが必要です – Jens

+2

JPAを使用する場合はセッターは必要ありません。それは使用しているモード(フィールドベースまたはプロパティベース)によって異なります。 –

答えて

1

ありがとうございましたM. Deinum's comment簡単で完璧なソリューションはReflectionTestUtilsです。

@Test 
public void testFoo() { 
    Foo foo = new Foo(); 
    ReflectionTestUtils.setField(foo, "id", 1L); 
    // assertion 
} 

ご注意:ReflectionTestUtilsは春から来ている:org.springframework.test.util.ReflectionTestUtils

関連する問題