c# - 为 UNITTESTS 构建配置公开方法

标签 c# .net nunit

我正在为我的项目进行单元测试。 具有业务逻辑的 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/

相关文章:

c# - 在 Assert.Multiple 中验证模拟

javascript - 同一按钮上的 HttpPost 和事件 Asp.Net Web 表单

c# - 我应该检查传递的 list<T> 是否为 null

c# - 在 LINQ 查询中创建嵌套在对象中的列表

java - 另一个 .Net 使用 Java WSDL 问题

.net - 将 NUnit 测试项目转换为 MS 测试

c# - Windows Phone 上的语音识别 - 语音到文本

c# - 通过网络优化 Dictionary.EnumerateFiles

c# - 如何为枚举提供用户友好的名称?

unit-testing - 如何测试我的存储库实现?