テスト駆動開発の初心者として、私はちょうど問題に遭遇しました。私のテストクラスは次のように始まります:独立した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());
}
ご覧のとおり、最初のテストメソッドは、autowired XXクラスを変更します。これは、autowired-valueを持つXXに依存する、以下のすべてのテストメソッドに影響します。
ゲッターとセッターをXXからテストするにはどうしたらいいですか?XXに残りのテストメソッドの自動値があることを確認しますか?
思想:
- は、試験方法の終了時に正しい値をリセットします。ゲッター/セッターが機能していない場合、これは機能しません。
- 最初のテストメソッドをテストクラスの最後に配置します。これはテストが実行順序に依存するためです。
- XXのゲッター/セッターをテストしないでください。 getter/setterはすべてのメソッドのようにテストする必要があるため、不正です。
お返事ありがとうございます!これは簡単な解決策を持っているかなり確信してI`m ... :)
EDIT:質問単体テストゲッター/セッターか否かについては、私は、主にhttp://www.sundog.net/sunblog/posts/should-we-test-getters-and-setters/でstatetの理由でそうすることを決めました。
@DirtiesContextは私が探していたものでした。ありがとう。 データベースからテストデータを提供するDAOであるため、このBeanをオートワイヤしたいと思っています。 – Steven