我有一个将字符串写成字节数组的两行方法。以下是实现该功能的代码。现在,我想编写一个测试用例来涵盖IOException。
public void convertStr(String str) {
ByteArrayOutputStream io = new ByteArrayOutputStream();
try {
io.write(str.getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
System.out.println(e);
}
}我只能为字符串写一个测试,但不能产生异常。
@Test
public void test2() throws IOException {
convertStr("exception");
assertTrue(true);
}有人能帮我一下吗?
发布于 2020-08-08 20:27:14
您正在尝试测试一个不可能发生的情况。
ByteArrayOutputStream.write(byte[])永远不会抛出IOException -它是从OutputStream继承的方法,它只是委托给[ByteArrayOutputStream.write(byte[],int,int)](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/ByteArrayOutputStream.html#write(byte%5B%5D,int,int%29)
我建议将您尝试测试的代码更改为
io.writeBytes(str.getBytes(StandardCharsets.UTF_8));这样您就不必添加代码来捕获永远不会抛出的异常。
发布于 2020-08-08 20:30:39
您可以使用模拟API,如Mockito。
Mockito.when(mockedObj.myMethod(Matchers.anyString()).thenThrow(new IOException("Error"));https://stackoverflow.com/questions/63315193
复制相似问题