STW*_*STW 5 .net unit-testing visual-studio
我正在寻找一些关于单元测试的建议,其方式是不要在生产代码中留下"测试钩子".
假设我有一个名为MethodLogger的静态类(VB.NET模块),它有一个"void WriteEntry(string Message)"方法,用于将调用方法和消息写入磁盘上的日志文件.WriteEntry()的实际目标可以转移到IMethodLogger的伪实现以运行单元测试,对于所有其他情况,它应该调用IMethodLogger的实际实现.
这是我到目前为止所提出的内容的粗略描述,我喜欢这种方法 - 但在一些快速测试中它提出了一些问题和怀疑:
[InternalAttributesVisibleTo("MethodLogger.Tests")]
internal static class MethodLogger
{
public void WriteEntry(string message)
{
LogWriter.WriteEntry(message);
}
private IMethodLogger LogWriter
{
get;
set;
}
#if DEBUG
internal void SetLogWriter(IMethodLogger logger)
{
LogWriter = logger;
}
#endif
}
Run Code Online (Sandbox Code Playgroud)
这是我的具体问题:
这将单元测试与DEBUG构建的运行紧密结合在一起; 当我运行单元测试时虽然它似乎没有专门重建DEBUG中的测试组件 - 是否可以这样做?
我可以使用像"TEST"这样的自定义预编译器标志来代替"DEBUG"吗?我将如何告诉Visual Studio始终使用此标志重建目标以进行测试以确保我的钩子/接缝可用?
就我个人而言,我不喜欢无法针对实际生产二进制文件运行测试的想法。
您不能将设置器标记为“过时”并禁用测试代码中的过时警告吗?加上合适的文档,这应该可以阻止生产代码意外调用它,但仍然可以对其进行测试。
但是,为了解决您的实际问题:
| 归档时间: |
|
| 查看次数: |
2172 次 |
| 最近记录: |