以编程方式获取 nUnit 选定类别

6

有没有一种程序化的方法在执行测试时获取所选测试类别? 类似于TestContext.Properties["_SELECTCATEGORIES"]

基本上,我有从数据库加载测试数据的测试用例,由于我有很多测试用例,因此项目加载需要很长时间。我正在尝试找到一种在未选择类别时使testCaseSources返回空的方法。


测试类别是什么意思? - Claudio Redi
我指的是在nunit gui或控制台中选择的类别,用于执行包含的类别。 - z0c
1个回答

3

更新

NUnit 框架 中,似乎没有直接的方法来识别或加载测试程序集中选择的类别。

使用反射,您可以扫描带有 TestAttributeTestFixtureAttribute 的类中的属性 Categories。通过将这些类别与您想要加载的类别进行匹配,您可以在加载之前过滤出要加载的测试。

此外,还有 TestContext.Test.Properties 关键字 _CATEGORIES(仅适用于 NUnit 2.5.7 及更高版本):

[Test]
[Category("Hello")]
public void TestCategory()
{
  Assert.IsTrue(((ArrayList)TestContext.CurrentContext.Test.Properties["_CATEGORIES"]).Contains("Hello"));
}

您可以在这里找到有关TestContext类的更多信息。当然,要解决这种方法的问题,需要预先加载整个测试程序集并循环遍历所有测试用例,这显然不是您的情况所期望的。


不太对。["_CATEGORIES"]返回装饰测试的类别,我需要的是在nunit图形界面或控制台中选择要执行的类别。 - z0c
@z0c 或许这不是一个非常令人鼓舞的更新,但至少我已经尝试着调整我的回答以更好地回应你的问题。 - Anders Gustafsson
在这个回答中的“here”链接中,我收到了一个“账户已被暂停”的消息,请提供一个新链接。 - funkymushroom
感谢 @AndersGustafsson - funkymushroom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接