我试图在下面的代码中覆盖catch块,但我无法。我知道在读/写文件时需要引起IOException,但我不能这样做。而且,我不能使用PowerMockito来覆盖静态方法,因为我使用的是JUnit5。有人能帮忙吗?
@Override
public String execute(UploadCategoryImageCommandRequest request) {
File tempFile = null;
FileOutputStream fos = null;
String fileName = "";
fileName = UUID.randomUUID().toString() + System.currentTimeMillis() + ".svg";
try {
tempFile = File.createTempFile(fileName, "svg");
fos = new FileOutputStream(tempFile);
fos.write(request.getFile().getBytes());
} catch (IOException e) {
log.error("File Creation Error: {}", e);
upload.setFileStatus(FileStatus.FAILED);
uploadRepository.save(upload);
throw new ApplicationException(ErrorKey.IMAGE_UPLOAD, ErrorCode.FAILED);
}
return string;
}
这是我编写的一个测试用例,但它返回了这个错误-org.mockito.exceptions.Misusing.MissingMethodInvocationException:when()需要一个参数,该参数必须是'a mock上的方法调用‘。例如:when(mock.getarticles()).ThenReturn(articles);
@Test
public void exception() throws IOException {
Upload upload = Upload.builder().fileStatus(FileStatus.FAILED).imagePath("http://").build();
MockMultipartFile firstFile = new MockMultipartFile("fileName", "fileName.svg", "text/plain", "some xml".getBytes());
UploadCategoryImageCommandRequest uploadCategoryImageCommandRequest = UploadCategoryImageCommandRequest.builder()
.file(firstFile)
.uploadType(UploadType.CATEGORY)
.build();
Mockito.when(file.createTempFile("filename","svg")).thenThrow(IOException.class);
uploadCategoryImageCommand.execute(uploadCategoryImageCommandRequest);
}
file.createTempFile
在默认临时目录中创建一个文件,您可以通过设置java.io.tmpdir
系统属性来重写该文件。如果您将其设置为某个不存在的目录,则临时文件创建将失败,您将得到IOException
。只需确保在完成后恢复它,这样就不会把其余的测试搞砸了。JUnit Pioneer的setSystemProperty
提供了一种出色的实现方法:
@Test
@SetSystemProperty(key = "java.io.tmpdir", value = "/no/such/dir")
public void exception() throws IOException {
// Call your code
}
ASPX。NET应用程序,使用XDocument。Load()从XML文件中读取。有时它会抛出IOException static,说明文件无法打开,因为它正被另一个进程使用。我无法通过打开文件并重新加载网站来随意重新创建它。但更奇怪的是,异常发生在Try-Catch块中,我在其中显式捕获系统。IOException。 这是堆栈: 异常类型:IOException 线程信息:线程ID:18线程帐户
我想寻求帮助,了解如何在JUnit测试中捕获IOException,以测试我的代码在发生错误时是否会抛出正确的异常。 以下是我的主要代码: 这是我的JUnit: 我想我必须在JUnit测试中创建一个错误的路径来抛出该异常,但我没能得到我想要的结果。我很感谢你的帮助。谢谢
在junit5和Mockito中如何覆盖返回void的方法的catch块。 下面提到的dump方法返回void并抛出RepositoryException和JSONException。 TidyJosnitemWrite.dump(节点,stringWriter,-1);
问题内容: 我想介绍getKeyStore()方法,但是我不知道如何介绍NoSuchAlgorithmException,KeyStoreException,UnrecoverableKeyException和CertificateException的catch块。我的方法是: 我该怎么做? 问题答案: 您可以 模拟 该块的任何句子以引发要捕获的异常。 示例模拟对throw 的调用。在这种情况下,
问题内容: 我正在用Go编写Web应用程序的代码,尽管各种mux库提供了一种设置自定义404错误处理程序的方法,但其他4xx和5xx错误代码却一无所获。 一种建议是在ResponseWriter界面中重写WriteHeader方法并检查状态代码,但是我对如何实际写入感到困惑(在输出之前重写ResponseWriter方法)。从negroni包中可以找到一个可能的例子。 这是为4xx和5xx错误提供
我已经为以下函数编写了Junit测试用例。当检查JACOCO测试覆盖率时。它显示测试用例只覆盖了try块。我是编写测试用例的新手。如何在测试用例中覆盖异常和catch块 这里有一个方法 和测试方法