gpt4 book ai didi

java - Jmock - 如何自动化和模拟控制台用户输入?

转载 作者:行者123 更新时间:2023-12-02 00:24:42 25 4
gpt4 key购买 nike

我有一些功能想要模拟从 main 调用(静态:我也读过 - jmock mocking a static method )。我最近读到 JMock 不支持静态函数的模拟。好吧,相关的代码(这给我带来了一个问题)必须从 main 调用,并且必须位于具有 main 的类中...

Sample source

Test code

现在,我想确保我的 main 有一个测试,以确保文件在继续之前存在。问题是,我的程序从控制台获取用户输入,所以我不知道如何模拟它?我是否只是深入到这一粒度级别,指定沿途的每一点发生的情况,以便我可以在返回用户输入的函数中只编写一个操作?我知道要写好测试,当测试运行时,他们不应该要求用户输入,我应该以某种方式在我的测试中指定它。

我认为与以下几点有关: How to use JMock to test mocked methods inside a mocked method我不太擅长 JMock...

最佳答案

如果 readInput() 方法执行某些操作,例如:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
return in.readLine();

然后你也许可以进行如下测试:

InputStream oldSystemIn = System.in;
InputStream mockSystemIn = context.mock(InputStream.class);
System.setIn(mockSystemIn);
context.checking(new Expectations() {{
// mock expected method calls and return values
}});
// execute
// verify
System.setIn(oldSystemIn);

关于java - Jmock - 如何自动化和模拟控制台用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10256119/

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