【问题标题】:Mockito/PowerMockito checking a returnMockito/PowerMockito 检查退货
【发布时间】:2020-08-18 01:21:42
【问题描述】:

基本上,我有一个类,重要的部分是这样的:

class A{
double num = 2;

public double getNum(){
return num;
  }

}

我想确保它看起来像这样:

class A{

public double getNum(){
return 2;
  }

}

有没有办法用 Mockito 或 PowerMockito 做到这一点?

我是 PowerMockito 的新手,刚接触 Mockito 几个月,如果这是一个愚蠢的问题,我很抱歉。

【问题讨论】:

  • 你为什么要测试它?我相信测试更关注行为而不是内部实现(您的字段是 package-private 并且没有设置器)。
  • 是的,我使用 Mockito 有点不合常规。它适用于高中机器人技术,我们正在教新生如何控制机器人。我不希望他们将电机功率设置为 0.2;或者其他什么,我希望它是我们给他们的枚举中的一个变量。长话短说,我只是想知道我是否可以测试它是一个变量还是一个数字。由于我们使用的是 WPILib 制作的框架,它有点像遗留代码,因为某些事情必须以某种方式完成。这是我的问题的简化版本。谢谢你的回答。我认为这是不可能的,但是......
  • “我不希望他们将电机功率设置为 0.2”是测试可以涵盖的内容。但是你必须反过来想。您不必断言 getter 的返回值,而是必须验证相应 setter 的参数(例如 motor.setPower(...))。在这种情况下,您将测试行为:“不应将电机功率设置为 0.2”。

标签: java methods mockito return powermockito


【解决方案1】:
class A{
  private double num;
  
  public constructor(double num){
    this.num = num;
  }

  public double getNum(){
    return num;
  } 
}

如果你需要它,你将不得不尝试上面的方法。但是没有必要验证这一点,因为测试应该验证行为。无论是取自service1 还是硬编码文本都没有关系,因为在其他一些测试中,该类肯定会失败。

【讨论】:

  • 遗憾的是,事实并非如此。我知道 Mockito 旨在验证行为,但我只是希望我错过了一些东西:/。我正在编写这些测试,以帮助高中同学在大流行期间学习编写机器人代码,因为他们无法使用机器人进行测试。由于硬编码数字是不好的做法,我想要一种方法来测试他们是否使用了变量。但是数字保持不变,只是我们有一个公共枚举,我们可以在其中更改所有数字。这只是因为我希望他们在我毕业之前学习好的做法,而我没有时间手动检查。那好吧。 ://
  • 前段时间我也遇到了同样的测试问题。我想以非常严格的方式运行代码,并通过测试进行验证。现在我明白单元测试的方式不是那样的。这是为了验证特定的方法或函数是否按照我们期望的方式运行。因为只要它通过测试,它如何获得价值并不重要。我们需要实现这一点的方法是强大的单元测试套件与所有可能的场景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多