【发布时间】:2018-05-04 14:59:48
【问题描述】:
我有办法
using Microsoft.VisualStudio.TestTools.UnitTesting; // using visual studio's test framework
[TestMethod]
public void ATestMethod()
{
// stuff
}
来自public class ATestClass。这个测试类运行两种类型的测试:
- 需要在运行测试的机器上安装特定软件的测试
- 可以免费运行的测试
为了处理这个问题,我添加了一个public class BaseTestClass,我从中派生了ATestClass,并在ATestClass 中添加了一个:
public bool isTheSoftwareInstalledOnTheMachine()
{
// stuff
}
我从ATestClass“装饰”了所有内部测试范围,如下所示:
[TestMethod]
public void ATestMethod()
{
if (isTheSoftwareInstalledOnTheMachine())
{
// stuff
}
}
我觉得这太可怕了。我宁愿能够写出类似的东西:
[TestMethod]
[RunIfTheSoftwareInstalledOnTheMachine]
public void ATestMethod()
{
// stuff
}
但我不知道是否允许定义“自定义”[characterizer]'s。 (我什至不知道他们的正确词。)如果是,那会是最好的设计吗? (我听说过装饰器模式,但我不知道是否可以在我的上下文中使其足够通用,因为我可能需要将条件用于许多其他测试类。)无论如何,我将如何继续使用 @987654332 @的?
【问题讨论】:
-
这叫做属性,你是否可以创建一个你的单元测试框架尊重的自定义属性取决于你使用的框架。
-
@CodeCaster thx,我添加了正确的标签,因为我知道了名称
-
@ujsgeyrr1f0d0d0r0h1h0j0j_juj 没有“the c# 单元测试框架”——但我猜你是在谈论 NUnit?
-
不,那不是 NUnit。这就是 Visual Studio 附带的框架。
标签: c# attributes decorator