在Setup方法中使用非单元自定义动作属性
本文关键字:自定义 单元 属性 Setup 方法 | 更新日期: 2023-09-27 18:14:29
我已经阅读了关于动作属性的nunit文档,我想创建一个可以在测试方法或设置方法上使用的动作属性(以避免在所有测试方法上重复属性)。
我创建了以下类(与文档中的类非常相似,但我尝试允许所有内容):
[AttributeUsage(
AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Assembly,
AllowMultiple = true)]
public class CustomActionAttribute : Attribute, ITestAction
{
private string message;
public CustomActionAttribute(string message)
{
this.message = message;
}
public void BeforeTest(TestDetails details)
{
WriteToConsole("Before", details);
}
public void AfterTest(TestDetails details)
{
WriteToConsole("After", details);
}
public ActionTargets Targets
{
get { return ActionTargets.Default | ActionTargets.Suite | ActionTargets.Test; }
}
private void WriteToConsole(string eventMessage, TestDetails details)
{
Console.WriteLine(
"{0} {1}: {2}, from {3}.{4}.",
eventMessage,
details.IsSuite ? "Suite" : "Case",
message,
details.Fixture != null ? details.Fixture.GetType().Name : "{no fixture}",
details.Method != null ? details.Method.Name : "{no method}");
}
}
[Test, CustomAction("TEST")]
public void BasicAssert()
{
}
在nunit Test Runner Text输出面板中,我有
* * * * * Test.CustomerT.BasicAssert
内部设置
之前的Case: TEST, from CustomerT.BasicAssert.
在Case: TEST之后,来自CustomerT.BasicAssert.
不工作的地方:
[SetUp, CustomAction("SETUP")]
public void CustomAttributeBeforeSetup()
{
System.Diagnostics.Debug.WriteLine("Inside Setup");
}
[Test]
public void BasicAssert()
{
}
在nunit Test Runner Text输出面板中,我有
* * * * * Test.CustomerT.BasicAssert
内部设置
?
如何创建可以在Setup方法上执行的自定义属性?
我假设您真正想要的是在整个测试夹具之前和之后运行BeforeTest和AfterTest。如果是这种情况,那么不要把它放在SetUp方法上,而是把属性放在Fixture上,即测试类。在TestDetails中,您可以通过检查TestDetails. issuite .