我一直在学习 TDD(使用 JUnit),我对如何测试 void 方法有疑问,在这种情况下我不能直接对方法的返回值使用 assertTrue() 之类的东西。 . 例如,假设我有一个简单的基于控制台的应用程序,它的一部分在屏幕上打印一个菜单,比如使用这种方法:
public void printMenu()
{
System.out.println("Menu:");
System.out.println("1. Option ONE");
System.out.println("2. Option TWO");
System.out.println("3. Exit");
}
我的问题是,我真的必须测试这个方法吗??如果是这样,我应该怎么做?
最佳答案
很难对依赖于静态方法调用的方法进行单元测试。这不是返回某些东西或 void
的问题。你可以做的是将打印抽象到一个接口(interface)中,并让你的类依赖于这个接口(interface)(例如使用构造函数注入(inject)):
private SomePrinterInterface _printer;
public void printMenu()
{
_printer.println("Menu:");
_printer.println("1. Option ONE");
_printer.println("2. Option TWO");
_printer.println("3. Exit");
}
在单元测试中,您可以模拟接口(interface)并验证是否调用了正确的方法。这样您就可以独立测试 printMenu。
关于testing - 测试驱动开发 : Void methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405955/