我正在为我的项目进行单元测试。 具有业务逻辑的 DLL 应该为 .Net 2.0 构建,但我想使用 Moq 进行测试(它需要 .Net 3.5)。这就是为什么我引用业务逻辑项目将所有测试移动到单独的 .Net 3.5 项目。 我需要测试一些方法,这些方法在我的测试项目中标记为内部方法。我可以看到使用带有条件构建符号的单独构建配置来做到这一点的唯一方法:
#if UNITTESTS
public
#else
internal
#endif
int DoSomeAction(int param1, int param2)
{
// some logic that need to be tested here
}
但是这样的代码看起来很难看。也许有一些更好的方法,比如通过一些特殊属性标记方法:
[ConditionalPublic("UNITTESTS")]
internal int DoSomeAction(int param1, int param2)
{
// some logic that need to be tested here
}
谢谢。
最佳答案
可以添加属性
[assembly: InternalsVisibleTo("ProjectName.Tests")]
(它来自 System.Runtime.CompilerServices)到您的项目 assembly.cs。现在您的测试项目可以访问内部。
HTH
关于c# - 为 UNITTESTS 构建配置公开方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552825/