测试私有变量的设置

时间:2015-04-15 22:08:05

标签: java testing

假设我们有这样一个类:

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

或者我可以使用反射来访问它,(但这看起来有点矫枉过正?)。

或许你想说我不应该测试它/我的设计有问题。

2 个答案:

答案 0 :(得分:0)

当然,创建一个公共getter,创建一个受保护的getter,然后测试暴露受保护方法或仅使用反射的子类 - 在某些情况下所有有效选项。

但如果这是(正如我猜测的那样)某个复杂系统的简化,你应该考虑改变设计;问问自己你想要测试什么;

  1. 将值设置为“结果”?
  2. 调用“fetcher”?
  3. 使用正确的输入调用“fetcher”?
  4. 也许您需要3次测试。 也许您需要更多具有公共方法的类来执行一项特定任务,并且可以直接测试它们。

答案 1 :(得分:0)

许多测试方法取决于您拥有的资源和时间。

你可以拥有getter并放置print语句,

你可以使用断言

如果您有权访问,我会投票使用调试器,并运行使用您的代码的程序,设置断点,并检查实际运行的程序。然后你的代码保持清洁'您必须为其他调试策略做的事情(将断言,调试方法和打印语句全部放在一起)。

相关问题