Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为方法编写Junits测试_Java_Unit Testing_Junit_Mockito - Fatal编程技术网

Java 为方法编写Junits测试

Java 为方法编写Junits测试,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我是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 m

我是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;
    }
}

这取决于测试的类型,如果是单一测试,您可以模拟amazon客户端,并在put object方法调用后模拟正面响应,或者根据需要模拟负面响应,如果是集成,它应该有一个测试方法,该方法接收与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);

}

这是单元测试,你能告诉我如何为这个特殊的方法编写单元测试吗?检查更新,兄弟。你创建了一个AmazonS3的模拟,并注入了一个抛出异常的版本和一个没有抛出异常的版本,并检查你的方法是否正确处理了这两种情况