Tôi có một phương pháp trong một trong các lớp trong cơ sở mã của tôi mà cho cuộc sống của tôi, tôi không thể nhận được vào với các bài kiểm tra junit của tôi. Về cơ bản lớp này được gọi là khi tôi yêu cầu một kết nối cơ sở dữ liệu, nếu một kết nối cũ được trả lại, một kết nối mới được thiết lậpJava - Mã số Bảo hiểm
Dưới đây là đoạn mã của mthod trong lớp học của tôi (tỉa xuống cho mục đích này)
public class TCSOracleDataSourceWrapper extends OracleDataSource {
private static final int STALE_CONNECTION_EX_CODE = 17143;
private OracleConnectionCacheManager cacheManager;
private String cacheName;
/** Local log variable **/
private final Log logger = LogFactory.getLog(getClass());
/**
* Class constructor
* @throws SQLException
*/
public TCSOracleDataSourceWrapper() throws SQLException {
super();
}
private static final long serialVersionUID = 1L;
@Override
/**
* Get a connection but if the connection is stale then refresh all DB connections
*
*/
public final Connection getConnection() throws SQLException {
logger.debug("Retrieving a database connection from the pool");
Connection connection = null;
try{
connection = super.getConnection();
}
catch(SQLException e)
{
if(e.getErrorCode() == STALE_CONNECTION_EX_CODE)
{
logger.error("Stale Oracle connection found in the Connection Pool. Refreshing invalid DB connections.");
//refresh invalid connections
cacheManager.refreshCache(cacheName, OracleConnectionCacheManager.REFRESH_INVALID_CONNECTIONS);
//now try to get the connection again
connection = super.getConnection();
}
else
{
throw e;
}
}
return connection;
}}
Bất kỳ ý tưởng nào về cách tôi có thể đảm bảo các bài kiểm tra junit của mình thực thi câu lệnh if? Tôi hiện đang sử dụng EasyMock và Powermock nhưng tôi không thể tìm thấy một cách để có được thành này nếu Statment sử dụng những công cụ này
Tất cả help is appreciated rất
Cảm ơn bạn Damien