Java 在JUnit测试用例中模拟用户输入
我想为一些需要用户输入的方法编写一个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,它没有实现任何有用的接口,那么您唯一的方法就是将其
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()
参数传递。测试它会更容易。