【发布时间】:2016-06-21 18:51:36
【问题描述】:
我需要帮助来使用 Java 中的 Mockito 模拟 AWS API。正如我试图模拟 RDS 连接但连接返回空语句对象。我必须模拟 S3、AWS 数据管道、JavaSaprkContext、RDS 连接、Lambda、SNS 和 DynamoDB。
这是我的 RDS 连接代码,它返回空语句对象:
public void testGetRDSConnection() throws SQLException{
Connection connection = mock(Connection.class);
Statement stmt = null;
stmt = connection.createStatement(); // Get NULL statement Object
ResultSet rs = stmt.executeQuery("SELECT * FROM table");
if (rs.next()) {
System.out.println("+ve Test is PASSED Name = testGetRDSConnection ");
} else {
System.out.println("+ve Test is FAILED Name= testGetRDSConnection ");
}
}
以及 S3 的测试用例,返回 null 元数据对象:
public void testGetObjectMetadata(){
ObjectMetadata obj = S3Util.getObjectMetadata(mock(AmazonS3Client.class), bucketName, filePath);
if (obj == null) {
System.out.println("+ve Test is FAILED Name= 'testGetObjectMetadata()' No metadata found");
fail("+ve Test is FAILED Name= 'testGetObjectMetadata()' No metadata found");
} else if (obj != null) {
System.out.println("+ve Test is FAILED Name= 'testGetObjectMetadata()'");
}
}
【问题讨论】:
-
您的第一个测试是一个单元测试,旨在测试
Statement。您的第二个测试是一个单元测试,旨在测试S3Util。我认为这些都不是您拥有的代码。 -
换句话说,您提供的两段代码都没有测试主题。你的测试目标是什么?除了 API 代码之外,您的任何测试都没有提供任何类型的目标,这不应该是需要检查的东西。
标签: java amazon-web-services amazon-s3 mockito