情况:我的一些集成测试类共享通用方法来设置数据库中的场景,因此我提供了一个抽象基类。它也负责一个完整的数据清理,在结束后所有测试跑:每个测试类多个ClassCleanup属性
public abstract class IntegrationTests
{
...
protected static void Cleanup() { ... }
}
我的继承类必须调用基方法,以确保我的基地清理代码运行:
[TestClass]
public class FooIntegrationTests : IntegrationTests
{
...
[ClassCleanup]
public static void FooCleanup()
{
...
Cleanup();
}
}
问题:据MSDN“[O]在一个类可以与[ClassCleanup]装饰NLY一个方法属性”所以我不能从基类装饰Cleanup
方法,即使我做的方法将不会被弄调用。
问题:我想这
- 始终运行从基类的
Cleanup
方法,而不在继承的类实现什么,和解决 - 始终运行在自定义清理方法如果有的话,继承测试类。
我不喜欢强制继承测试类显式调用基类,因为我必须记得实现它。我更喜欢更优雅但简单的(!)技术。有任何想法吗?
注意:为我的基地功能的单是由所有的测试类共享不起作用,因为我对所有连接到同一个数据库实例并行多个测试代理运行我的测试。
“ClassCleanup”属性只能分配给静态方法。 'virtual'和'override'关键字只能用于实例方法。 –
啊,对,我正在考虑通常的安装/拆卸。道歉。 –
静态方法/类打破了正常的继承规则。所以不,我不确定除了从继承类中调用Cleanup以外,你可以在这里做很多事情。 –