在测试环境中使用Conditional属性有什么好方法吗?
我的想法是,如果你能做到这一点:
[Conditional("Debug")]
public void DebugMethod()
{
//...
}
也许你可以使用:(?)
[Conditional("Test")]
public void TestableMethod()
{
//...
}
答案 0 :(得分:4)
当有更好的选择时,我没有看到用途:测试项目。
使用NUnit或MSTest以更优雅的方式实现此功能。
答案 1 :(得分:1)
我接受Mehrdad的回答 - 我只是想提供更多关于你可能使用这些属性的背景信息:
[Conditional]
之类的东西更常用于控制日志/跟踪或与正在执行的调试器的交互等内容;这些调用是在常规代码的中间,但在某些版本中你可能不需要它们(而且#if ......等等太难看了,容易忘记)。
答案 2 :(得分:1)
如果测试代码不是产品的一部分,则不应该在产品代码库中。我已经看到项目尝试将单元测试包含在与测试对象相同的项目中,并使用#if
语句仅将它们包含在调试版本中,但后来才后悔。
一个明显的问题是应用程序项目获得对单元测试框架的引用。即使您可能不需要将该框架作为产品的一部分发布(如果您可以保证发布版本中没有代码可以引用它),它对我来说仍然有点滑稽。
让测试代码为测试代码,生产代码为生产代码,让生产代码对此没有任何线索。
答案 3 :(得分:1)
另一个问题是您可能希望在发布版本上运行单元测试。 (我们当然这样做。)