2016-06-29 4 views
0

Daoクラスをテストする方法を探しています。その後、私は方法DAOのクラスをテストできるようにデータソースを取得する方法

public List<Activity> activityList(Connection con) 

どのように私はUserDAOImplをテストすることができますし、クラスのUserDAOImplを持って

public class OrderEJB implements OrderEjbLocal{ 

    @Resource(mappedName = "java:jboss/datasources/MyDS") 
    private DataSource dataSource; 

    @Inject 
    @DataAccessObject 
    private UserDAO userDAO; 

    @Override 
    public List<Activity> activityList() { 

     try (Connection connection = dataSource.getConnection();) { 

      return this.userDAO.findAllActivities(connection); 

     } catch (SQLException e) { 

      log.error("error"); 
      throw new RuntimeException(e); 
     } 
    } 

}

私のクラスの一つは、このようにデータソースを取得しますか?私はmockito、jmock、easymockのようなものが必要ですか?また、Junitテストを実行するときにサーバーを実行する必要がありますか?またはそれなしでそれを行う方法はありますか?

UserDAOImpl testInstance = ...; // Not sure how you do this 
Connection mockedConnection = mock(Connection.class); 

// Business method 
testInstance.activityList(mockedConnection); 

// Asserts 
verify(mockedConnection).prepareStatement("select * from dual"); // Or whatever it is that you need to verify 

サーバーがまったく実行する必要はありません:あなたは次のようにあなたのUserDAOImplのactivityListメソッドに渡しているという接続を模擬するためにMockitoを使用することができます

おかげ

+0

あなたはhttp://stackoverflow.com/questions/9807414/dao-unit-testingからいくつかのアイデアを得ることができます – Wilson

答えて

1

。 UserDAOImplがConnection上のメソッドを呼び出すとき、実際にはMockitoによって生成されたコードを実行していて、テストメソッドでより深く記述するverifyメソッドをサポートするために実行したコードを追跡します。 あなたのUserDAOImplもConnection#prepareStatement(String)から取得したPreparedStatementで何かをしようとしている可能性があります。あなたは自動的にモックを返しますモックを作成 注:

mock(Connection.class, Mockito.RETURNS_DEEP_STUBS); 
関連する問題