为方法编写 Junits 测试
Writing Junits Test for a method
我是 Java 的新手。我想为这种方法编写junits,要测试哪些部分才能获得全面覆盖?
public class S3Client {
private final AmazonS3 s3Client;
@Inject @Named(S3_KIOSK_EVENT_BUCKET)
private final String bucketName;
public boolean save(String folderName, String filename, String messageBody) {
try {
s3Client.putObject(bucketName, String.format("%s/%s.json",folderName,filename), messageBody);
log.debug("Message Published in S3 Bucket");
return true;
} catch (AmazonServiceException e) {
log.error("File cannot be added. Error: "+ e);
}
return false;
}
}
这取决于测试的类型,如果它是单一的,你可以模拟亚马逊客户端并在调用 put 对象方法后模拟积极响应或你想要的消极响应,如果它是集成它应该有一个测试方法,它接收与 save 方法相同的参数,并改变成功和失败的组合,请记住,覆盖范围是基于测试通过的代码扇区,其中包括 try catch
S3Client subject;
AmazonS3 s3Client;
@BeforeAll
static void setup(){
s3Client = mockito.mock(AmazonS3.class);
subject = new S3Client(s3Client);
}
@Test
public void saveObjectInS3Test(){
//We simulate that everithing is ok
when(s3Client.putObject(mockito.isAny(),mockito.isAny(),mockito.isAny())).thenReturns(new PutObjectResult())
assertEqual(subject.save("fooForlderName","fooFileName","fooMessageBody"),true);
//Then we can simulate an exception
when(s3Client.putObject(mockito.isAny(),mockito.isAny(),mockito.isAny())).thenThrow(AmazonServiceException.class);
assertEqual(subject.save("fooForlderName","fooFileName","fooMessageBody"),false);
}
我是 Java 的新手。我想为这种方法编写junits,要测试哪些部分才能获得全面覆盖?
public class S3Client {
private final AmazonS3 s3Client;
@Inject @Named(S3_KIOSK_EVENT_BUCKET)
private final String bucketName;
public boolean save(String folderName, String filename, String messageBody) {
try {
s3Client.putObject(bucketName, String.format("%s/%s.json",folderName,filename), messageBody);
log.debug("Message Published in S3 Bucket");
return true;
} catch (AmazonServiceException e) {
log.error("File cannot be added. Error: "+ e);
}
return false;
}
}
这取决于测试的类型,如果它是单一的,你可以模拟亚马逊客户端并在调用 put 对象方法后模拟积极响应或你想要的消极响应,如果它是集成它应该有一个测试方法,它接收与 save 方法相同的参数,并改变成功和失败的组合,请记住,覆盖范围是基于测试通过的代码扇区,其中包括 try catch
S3Client subject;
AmazonS3 s3Client;
@BeforeAll
static void setup(){
s3Client = mockito.mock(AmazonS3.class);
subject = new S3Client(s3Client);
}
@Test
public void saveObjectInS3Test(){
//We simulate that everithing is ok
when(s3Client.putObject(mockito.isAny(),mockito.isAny(),mockito.isAny())).thenReturns(new PutObjectResult())
assertEqual(subject.save("fooForlderName","fooFileName","fooMessageBody"),true);
//Then we can simulate an exception
when(s3Client.putObject(mockito.isAny(),mockito.isAny(),mockito.isAny())).thenThrow(AmazonServiceException.class);
assertEqual(subject.save("fooForlderName","fooFileName","fooMessageBody"),false);
}