java - 公开成员以对其进行单元测试

标签 java c# unit-testing access-modifiers

我知道有很多关于类内私有(private)成员的单元测试的问题。他们中的大多数人得出的结论是,需要测试的私有(private)成员是一个需要重构的设计缺陷(例如,参见 here )。不过我还有最后一个问题:

当我将私有(private)成员重构为新类时,它们成为(公共(public))API 成员,但我打算避免这种情况。因此,通过简化我们的客户端类,我们通过设计一个新的公开可见的帮助程序类来污染我们的 API。当然,人们也可以在程序集中编写测试代码并将这些帮助程序置于内部,但因此我们也将测试代码发送到生产站点。

我认为这个问题没有正确的答案,但也许您有一些好主意可以帮助避免这些情况?

最佳答案

关于 C#,您可以尝试最后一个技巧

  1. 将您的/成员设为内部
  2. 在要测试的程序集中,打开 AssemblyInfo.cs 文件,并通过添加以下属性使内部结构对您的测试项目/程序集可见:

[InternalsVisibleTo("YourTestProject")]

这会使您的成员在程序集之外不可见,除非是为了在“YourTestProject”程序集内进行测试。

有关此属性的更多信息可以找到 on MSDN .

关于java - 公开成员以对其进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198198/

相关文章:

java - 另一个 Activity 中的单选按钮仍然为空?

java - 尝试使用 MAPI 从 MS Exchange 服务器读取帐户的收件箱

C# 使用 FindWindowEx 按名称和序号获取子句柄

c# - ASP.net 链接按钮 PostBackUrl 不适用于 IIS 8

unit-testing - 在 Busted 测试期间模拟现有 lua 文件中的方法

scala - 用于单元和集成测试的sbt汇总覆盖率报告

java - ThreadPoolExecutor 挂起

c# - 不等待按任意键继续退出控制台...

c# - 请求静态内容时 Nancy 单元测试不起作用

java - 注解指定的bean名称与现有错误冲突但仅在gradle中