有没有办法在NUnit中没有继承的情况下在测试类之间共享断言?

pto*_*oos 10 .net nunit unit-testing mspec

在MSpec中,有一个简洁的功能,允许您在多个测试之间共享断言.他们被称为"行为"

行为定义了可重用的规范,这些规范封装了一组特定的,你猜对了的行为; 然后,您可以在任何具有特定行为的上下文中包含这些规范.

您将它们定义为具有断言(It字段)的类

public class VehicleThatHasBeenStartedBehaviors
{
    protected static IVehicle vehicle;
    It should_have_a_running_engine = () => vehicle.IsEngineRunning.ShouldBeTrue();
    It should_be_idling = () => vehicle.RevCount.ShouldBeBetween(0, 1000);
}
Run Code Online (Sandbox Code Playgroud)

并将它们包含在您的测试类中

public class when_starting_a_car
{
    Behaves_like<VehicleThatHasBeenStartedBehaviors> a_started_vehicle;
}
Run Code Online (Sandbox Code Playgroud)

如何使用NUnit完成相同的操作?

Mik*_*erg 1

您可能想了解一下Mixin概念。

这是一个 SO答案,描述了如何使用 C# 4.0 实现此目的