Java 我是否需要专注于测试;“公众”;方法或;“私人”;JUnit测试中的方法?

Java 我是否需要专注于测试;“公众”;方法或;“私人”;JUnit测试中的方法?,java,testing,junit,Java,Testing,Junit,大多数JUnit测试是为公共方法还是私有方法编写的?如果我没有那么多时间,我需要关注哪些方面呢?取决于您的测试目标。 理想情况下,您希望以100%的覆盖率测试所有API:)您应该测试构成API一部分的所有内容。除非您使用的是反射,否则这意味着公共/受保护和包级别的方法 显然,这是一种观点。但这是基于经验的。让我进一步谈谈我的意见 理想情况下,您应该实践测试驱动的开发。在这种做法中,您可以: 首先编写测试,包括您希望拥有的测试主题的公共方法。这将帮助您设计一个有用的API 然后编写足够的代码使测试

大多数JUnit测试是为公共方法还是私有方法编写的?如果我没有那么多时间,我需要关注哪些方面呢?

取决于您的测试目标。
理想情况下,您希望以100%的覆盖率测试所有API:)

您应该测试构成API一部分的所有内容。除非您使用的是反射,否则这意味着公共/受保护和包级别的方法

显然,这是一种观点。但这是基于经验的。让我进一步谈谈我的意见

理想情况下,您应该实践测试驱动的开发。在这种做法中,您可以:

  • 首先编写测试,包括您希望拥有的测试主题的公共方法。这将帮助您设计一个有用的API
  • 然后编写足够的代码使测试通过。这将为您提供100%的覆盖率,并且没有多余的代码
  • 然后重构
    在进入重构阶段之前,您甚至可能没有任何私有方法。

    您需要测试类的行为。从公共方法开始。如果覆盖对象的所有状态,则最有可能覆盖私有方法。以100%的州覆盖率为目标(只是一个标记。在实际情况下不太可能实现)

    我怀疑你是否会看到大量的私有方法,也就是说,它们将出现在一个方法中,其中涉及的变量不应在外部/在非常特定的情况下进行修改。也就是说,public和private的主要区别在于可访问性:private只能在类内访问,而public可以在类外访问

    一,。你总是需要有时间做测试。如果你不这样做,那你就是做错了。2.测试一切,从公共方法开始。这是一个测试方法的问题,所以它可能属于。如果你需要测试私有方法以获得完整的覆盖,那么你需要重构。我将奖励这个答案。我希望有更多的人这样想。测试应该是检查您的类是否满足其要求;不是关于你有什么方法。如果你构建了你的方法,然后去测试它们,你就有可能为你已经知道的功能编写测试;而不是为你需要的功能编写测试。我已经获得了承诺的100点声誉奖励。这个令人生畏的答案强调,我们应该测试行为,而不是方法。它建议100%的州覆盖率(这很好);而不是100%LOC覆盖率(这既不经济又毫无意义)。我希望在我漫长的职业生涯中遇到的开发人员中,有更多的人拥有Jayan对单元测试的态度。@David Wallace:谢谢-增加了“状态覆盖率”的强调-希望它不会与语句覆盖率混淆:)抱歉,但是100%LOC覆盖率并不是一种真正经济高效的测试方式;而且它也不能保证这个类做它应该做的事情。然而,这可能会导致一种错误的安全感,在具有用户界面的真实应用程序中,这几乎是不可能的,因此也就产生了笑脸。我说,把你的目标定得很高。