gpt4 book ai didi

java - Java 中的 EasyMock 和文件

转载 作者:行者123 更新时间:2023-11-28 21:14:04 25 4
gpt4 key购买 nike

我正在编写应用程序,我需要模拟文件来测试它。我的代码如下:

@Test
public void testPostMail() throws Exception
{
Emailer instance = new Emailer();
instance.setRecipientsFromFile(new File("list.txt"));
}

问题是,我不想依赖我硬盘上的文件(当然我可以制作一个具有适当内容的文件并在测试后删除它,但我想用 EasyMock 来做)。

我尝试导入 org.easymock.classextension.EasyMock 并使用它,但是:

1) 我仍然收到错误“文件不是接口(interface)”

2) classextension.EasyMock 已弃用,所以我应该只使用 EasyMock

我不工作的 EasyMock 代码:

@Test
public void testSetReceipientsFromFile() throws Exception
{
File file = EasyMock.createMock(File.class);
FileReader in = EasyMock.createMock(FileReader.class);
BufferedReader br = EasyMock.createMock(BufferedReader.class);

EasyMock.expect(new FileReader(file)).andReturn(in);
EasyMock.expect(new BufferedReader(in)).andReturn(br);

EasyMock.expect(br.readLine()).andReturn("test@mail.com");
EasyMock.expect(br.readLine()).andReturn("test2@mail2.com");

EasyMock.replay(file, in, br);

EasyMock.verify(file, in, br);

// ...
}

编辑:我想从 EasyMock 更改为 Mockito,因为我听到了更多有利的意见。

最佳答案

EasyMock 和 Mockito 都不支持对象的模拟构造。因此,您需要一个支持它的库,例如 PowerMock或 PowerMockito。

但是,我认为这里存在设计缺陷。 Emailer 有责任读取文件吗?我不这么认为。

我将从 Emailer 中读取文件的代码提取到负责从文件中读取收件人列表的新类中。这将使 Emailer 更易于测试。如果您想测试这个新类,创建一个真实文件(使用 TemporaryFolder rule )是一个自然的选择,因为读取文件是该类的主要职责。

关于java - Java 中的 EasyMock 和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10213407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com