首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟ByteArrayOutputStream异常

如何模拟ByteArrayOutputStream异常
EN

Stack Overflow用户
提问于 2020-08-08 20:09:00
回答 2查看 559关注 0票数 0

我有一个将字符串写成字节数组的两行方法。以下是实现该功能的代码。现在,我想编写一个测试用例来涵盖IOException。

代码语言:javascript
复制
public void convertStr(String str) {
        ByteArrayOutputStream io = new ByteArrayOutputStream();
        try {
            io.write(str.getBytes(StandardCharsets.UTF_8));
        } catch (IOException e) {
            System.out.println(e);
        }
        
    }

我只能为字符串写一个测试,但不能产生异常。

代码语言:javascript
复制
@Test
    public void test2() throws IOException {
        convertStr("exception");
        assertTrue(true);
    }

有人能帮我一下吗?

EN

回答 2

Stack Overflow用户

发布于 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)

我建议将您尝试测试的代码更改为

代码语言:javascript
复制
io.writeBytes(str.getBytes(StandardCharsets.UTF_8));

这样您就不必添加代码来捕获永远不会抛出的异常。

票数 0
EN

Stack Overflow用户

发布于 2020-08-08 20:30:39

您可以使用模拟API,如Mockito

代码语言:javascript
复制
Mockito.when(mockedObj.myMethod(Matchers.anyString()).thenThrow(new IOException("Error"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63315193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档