这曾经用于旧版本的nunit.framework.dll。我最近更新了我的测试以使用SpecRun运行。当代码到达我的BeforeScenario方法时:
[BeforeScenario]
public void Init()
{
_sw.Start();
Initialize();
var env = ConfigManager.GetEnvironment();
ArrayList categories = TestContext.CurrentContext.Test
.Properties["Category"] as ArrayList; // exception here
if (env.Contains("csp-dev") || env.Contains("csp-qa") || env.Contains(":8445"))
{
if (categories != null && categories.Contains(CategoryToExclude))
{
Assert.Inconclusive("You tried to run 'Write' test on {0}. Test has been stopped.", env);
}
}
LoginPage.Goto();
LoginPage.LoginAs(TestConfig.Username).WithPassword(TestConfig.Password).Login();
}
它会抛出TestContext属性的异常。
任何人都知道在新的nunit.dll下解决这个问题吗?
编辑: NUnit版本3.2.1 重新锐化9 VS:2015年更新2
答案 0 :(得分:1)
表达式
TestContext.CurrentContext.CurrentTest.Properties["Category"] as ArrayList
除非NUnit的底层实现使用ArrayList,否则总是为null - 我可以保证不会!编写此代码最安全的方法是编写...
var categories = TestContext.CurrentContext.CurrentTest.Properties["Category"];
在当前的实现中,这将为您提供IList。
我注意到这个界面会让你更多地了解NUnit内部结构。您需要知道类别是作为具有特定名称的属性实现的。我们的内部代码没问题,但我们应该在CurrentTest中添加Categories属性。