当前位置: 首页 > 知识库问答 >
问题:

我们如何测试包-私有类?

施旭东
2023-03-14

我正在阅读Effective Java一书,在第13项:最小化类和成员的可访问性中提到:

为了便于测试,您可能会尝试使类、接口或成员更容易访问。在某种程度上这是好的。为了测试一个公共类包的私有成员是可以接受的,但将可访问性提高到更高是不可接受的。换句话说,将类、接口或成员作为包导出API的一部分以促进测试是不可接受的。

共有1个答案

齐振
2023-03-14

基本上,这意味着您的tester类应该驻留在与您的测试类相同的包中。这将使您的测试类以及所有受包保护的成员和方法可以访问您的测试类。这些类可能位于不同的根下:测试类可能位于src/main/java/myrootpackage/first/second/myclass.java下,测试类可能位于src/test/java/myrootpackage/first/second/myclasstester.java下。

 类似资料:
  • 有没有任何变通办法来直接测试那些方法而不公开它们?

  • 我有一个Angular 11项目,我不知道如何测试私有方法。 下面是一个代码示例: 有什么想法吗?

  • 公共方法getA()的测试按预期工作,但私有方法getB()的测试不返回模拟值“b”,而是返回与方法getB()的实际返回值相对应的“b”。必须如何调整对getB()的测试,以便返回模拟值“b”?

  • 问题内容: 如何对具有内部私有方法,字段或嵌套类的类进行单元测试(使用xUnit)?还是通过内部链接(static在C / C ++中)或在私有(匿名)名称空间中使其私有化的函数? 仅仅为了能够运行测试而更改方法或函数的访问修饰符似乎很糟糕。 问题答案: 更新: 大约十年后,测试私有方法或任何无法访问的成员的最佳方法可能是来自Manifold框架。 这样,您的代码将保持类型安全和可读性。没有设计折

  • 问题内容: 在Maven项目中,我的测试类和源类位于同一包中,但位于不同的物理位置。 访问测试类中的源类没问题,但是我想在main方法中运行测试运行器并访问,以便我可以创建jar和执行测试。 但这不起作用,因为我无法访问测试代码。我不明白,因为它们在同一个包装中。 问题 :如何从应用程序类访问测试类?另外,Maven如何打包一个包含测试类的胖子并执行测试? 问题答案: 您不应从应用程序代码访问测试

  • 我在网上读了一些讨论。他们说,我们不应该对私有方法进行单元测试或检查私有状态,因为这是实现细节,是糟糕设计的标志。但就我而言,我真的不知道如何做得更好。 下面是一个示例代码(我的实际代码是使用factory编写的,但我尝试使用纯js创建一个相同的案例,这样每个人都更容易理解,因为相同的原因是闭包): 在我真正的应用程序中,我可以注入和模拟本地存储,但这是一个问题。我的问题是如何测试方法是否设置了其