假设我们有这样一个类:
public class Foo
{
private String results;
private DataFetcher fetcher;
public void setFetcher(DataFetcher fetcher)
{
//handle exceptions, empty results, etc.
this.fetcher = fetcher;
}
public void acquireResults(int id)
{
this.results = fetcher.fetchData(id);
}
public String printResults()
{
return "Your results: " + this.results;
}
}
我们要在调用acquireResults
时检查是否正确设置了私有变量results
。
我该如何测试?
我可以添加一个getter,这样我就可以在测试时访问results
。
或者我可以使用反射来访问它,(但这看起来有点矫枉过正?)。
或许你想说我不应该测试它/我的设计有问题。
答案 0 :(得分:0)
当然,创建一个公共getter,创建一个受保护的getter,然后测试暴露受保护方法或仅使用反射的子类 - 在某些情况下所有有效选项。
但如果这是(正如我猜测的那样)某个复杂系统的简化,你应该考虑改变设计;问问自己你想要测试什么;
也许您需要3次测试。 也许您需要更多具有公共方法的类来执行一项特定任务,并且可以直接测试它们。
答案 1 :(得分:0)
许多测试方法取决于您拥有的资源和时间。
你可以拥有getter并放置print语句,
你可以使用断言
如果您有权访问,我会投票使用调试器,并运行使用您的代码的程序,设置断点,并检查实际运行的程序。然后你的代码保持清洁'您必须为其他调试策略做的事情(将断言,调试方法和打印语句全部放在一起)。