有没有办法将两个C#属性合并为一个?

时间:2014-07-18 17:58:55

标签: c# testing attributes nunit mbunit

这似乎是一个奇怪的问题,但实际上我的情况并不太疯狂。我目前正在构建一个在Web平台上执行Selenium UI测试的测试框架,并且一切都运行良好,但由于需求,我们最终在测试套件中使用了两个不同的框架。 MbUnit和NUnit(MbUnit用于并行化,NUnit用于本机Visual Studio 2012支持)。

这两个没有任何问题,他们只是在他们的属性中使用相同的命名约定,我们的测试装饰如下:

using NUnit.Framework;
using mbunit = MbUnit.Framework;

[TestFixture, mbunit::TestFixture, mbunit::ParallelizableAttribute]
public class MyTestFixture
{
    [Test, mbunit::Test]
    public void MyTest(){}
}

再次,不坏或太烦人,但如果有可能我想要一种方法将类似的属性包装成一个属性。我知道在ASP.Net MVC中你可以做动态模型元数据魔术,结合验证属性,但我不知道MVC之外是否有一种方法可以清除那些最终从我们的框架编写测试套件的人

PS - 我可以在新属性中包含一些MbUnit属性(将属性从“mbunit :: Test”转换为“Parallel”),但像SetUp这样的重要属性被密封到MbUnit框架,这让我们“ mbunit :: SetUp“标签,如果我们只是按照它的方式离开它,那么在不一致的情况下,我觉得更令人困惑。

PSS - PNunit在这一点上对我们的情况并不好......也许随着更多的文档和与NUnit更加无缝的集成,我们可以在将来轻松迁移。

1 个答案:

答案 0 :(得分:1)

不,你不能。

它将涉及多重继承,C#或.NET都不支持。