Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JUnit测试用例中模拟用户输入_Java_Junit - Fatal编程技术网

Java 在JUnit测试用例中模拟用户输入

Java 在JUnit测试用例中模拟用户输入,java,junit,Java,Junit,我想为一些需要用户输入的方法编写一个JUnit测试用例。以下是我的方法的一部分: public void createCart() { ... myCart= new Cart(); s = console.readLine("Enter your first name: "); myCart.setFirst(s); ... } 如何为上述内容编写Junit测试用例,即如何在测试用例中提供名字。既然您使用的是java.io.Console,它没有实现任何有用的接口,那么您唯一的方法就是将其

我想为一些需要用户输入的方法编写一个JUnit测试用例。以下是我的方法的一部分:

public void createCart() {
...
myCart= new Cart();
s = console.readLine("Enter your first name: "); 
myCart.setFirst(s);
...
}

如何为上述内容编写Junit测试用例,即如何在测试用例中提供名字。

既然您使用的是
java.io.Console
,它没有实现任何有用的接口,那么您唯一的方法就是将其打包或包装

看看模拟java框架,比如EasyMock或Mockito。它们允许您模拟任何API,即使API返回您想要的值


另一种解决方案不是直接使用
控制台
,而是使用两种实现创建接口:一种基于
控制台
用于生产,另一种用于测试

因为您使用的
java.io.Console
似乎没有实现任何有用的接口,所以您唯一的方法就是将其打包

看看模拟java框架,比如EasyMock或Mockito。它们允许您模拟任何API,即使API返回您想要的值


另一种解决方案不是直接使用
控制台
,而是使用两种实现创建接口:一种基于
控制台
用于生产,另一种用于测试

除了控制台之外,我还能用什么使这更容易呢?@AlexR还说:在业务方法中读取用户输入是一种不好的做法。我的建议是将输入作为
createCart()
参数传递。测试它会更容易。除了控制台之外,我还能用什么使这更容易呢?另外@AlexR说:在业务方法中读取用户输入是一种不好的做法。我的建议是将输入作为
createCart()
参数传递。测试它会更容易。