2012-03-01 11 views
2

擬似オブジェクト、Springまたは他のフレームワークを使用してDAOなしでサービス層をテストする方法の例を教えてください。私のJavaコードは次のようになります。DAOのないサービス層のテスト

public int myServiceMethod(int number) { 

    int myInt = Factory.getDAOImpl.getNumber(); 
    return myInt + number * 8; 
} 

私はmyServiceMethodのロジックをテストしたいが、DAOメソッドはテストしない。 可能ですか?それをリファクタリングする必要がありますか?この簡単な方法をテストする方法の例を私に教えてください。 ありがとう

答えて

6

あなたの例では、あなたのDAOを模擬する必要があります(例えば、Mockitoを使用)、返される番号を修正してください。メソッドgetNumberを呼び出す場合

DAOImpl myDao = mock(DAOImpl.class); 
when(myDao.getNumber()).thenReturn(7); 

、あなたは常にあなたのサービスを作成するときに7.パスこのDAOを取得し、通常どおりにテストを書きます:

assertEquals(224, service.myServiceMethod(4)); 

私はこれが役に立てば幸い!

+0

DAOImplはパッケージプライベートクラスであり、ファクトリを介してのみインスタンス化できるため、コンパイラは不平を言います。 – Oscar

関連する問題