我注意到在使用测试用例而不是测试时,测试类别不能通过testcontext获得。所以让我们查看一些代码:
[TestFixture]
public class FormTests : BrowserTests
{
[TestCase("/some-url/", FormType.ContactForm), Category("form")]
[TestCase("/some-other-url/", FormType.ContactForm), Category("form")]
public void AssertFormIsSubmittable(string url, FormType formType)
{
Browser.OpenPage($"{BaseUrl}{url}", true);
Browser.Action(FormActions.EnterFormFields(formType));
Browser.Action(FormActions.Submit());
var isSuccesfullySubmitted = Browser.Verify(FormState.IsSubmitted());
Assert.IsTrue(isSuccesfullySubmitted);
}
[Test, Category("form")]
public void FunctionToTestIfCategoryIsWorking()
{
Browser.OpenPage($"{BaseUrl}", true);
Browser.Action(FormActions.EnterFormFields(FormType.ContactForm));
Browser.Action(FormActions.Submit());
var isSuccesfullySubmitted = Browser.Verify(FormState.IsSubmitted());
Assert.IsTrue(isSuccesfullySubmitted);
}
}
当运行AssertFormIsSubmittable(带有测试用例)时,在BrowserTests基类中,当我执行:var category = TestContext.CurrentContext.Test.Properties.Get("Category");
时,结果为空。
当我执行FunctionToTestIfCategoryIsWorking时,相同的代码行有" form"结果是。这是预期的结果。不知何故,当使用TestCase时,它不再起作用了。
我尝试将属性更改为:
[TestCase("/some-url/", FormType.ContactForm)]
[TestCase("/some-other-url/", FormType.ContactForm)]
[Category("form")]
和
[Category("form")]
[TestCase("/some-url/", FormType.ContactForm)]
[TestCase("/some-other-url/", FormType.ContactForm)]
和
[Test, Category("form")]
[TestCase("/some-url/", FormType.ContactForm)]
[TestCase("/some-other-url/", FormType.ContactForm)]
所有结果都相同。我寻找遇到同样问题的人,但我发现没有负载。我在https://github.com/nunit/nunit上查找了已知问题和错误,但没有找到任何相似的内容。
我在Windows 7 Enterprise计算机上使用Visual Studio 2015社区,Update 3。我安装了Nunit 3测试适配器Visual Studio扩展。
我有什么遗漏的吗?当然,非常感谢任何帮助:)