C# NUnit设置标志';TestCase期间的d枚举

C# NUnit设置标志';TestCase期间的d枚举,c#,.net,enums,nunit,C#,.net,Enums,Nunit,我正在尝试让Nunit的测试用例使用带有标志的枚举: [NUnit.Framework.TestCase(Framework.Environments.HD3 | Framework.Environments.BizTalk, "Test","Test")] public void SimpleTest(Framework.Environments environment, string org, string source) { envi

我正在尝试让Nunit的测试用例使用带有标志的枚举:

[NUnit.Framework.TestCase(Framework.Environments.HD3 | Framework.Environments.BizTalk, "Test","Test")]
        public void SimpleTest(Framework.Environments environment, string org, string source)
        {
            environment = Framework.Environments.BizTalk| Framework.Environments.HI5;
            ....
测试的第一行是查看该值是否设置正确-它可以正常工作。 但是TestCase没有设置枚举。它得到的是HD3,而不是HIALUN

以下是创建我的枚举的方式:

    [Flags]
    public enum Environments
    {
        HD3 = 0,
        HD1 = 1 << 0,
        HD2 = 1 << 1,
        HD4 = 1 << 2,
方法内部:a和b为null

很可能和我的修女有关,我得挖一点

更新2
看来testdrive.NET就是罪魁祸首。它没有按预期工作。我更新了TestDriven,它工作得很好。

您应该修改您的标志声明,假设
HD3
是一个可标记的值

public enum Environments
{
    None = 0,
    HD1 = 1 << 0, // 1
    HD2 = 1 << 1, // 2
    HD3 = 1 << 2, // 4  
    HD4 = 1 << 3, // 8

    // etc.
}

假设
HD3
是一个可标记的值,您应该修改您的标志声明

public enum Environments
{
    None = 0,
    HD1 = 1 << 0, // 1
    HD2 = 1 << 1, // 2
    HD3 = 1 << 2, // 4  
    HD4 = 1 << 3, // 8

    // etc.
}

NUnit绝对不会将null传递给测试用例:如果它传递了,NUnit自己的测试将失败,我们会从人们那里听说它


我怀疑您可能正在使用NUnit自己的跑步者以外的其他人来执行测试。是这样吗?

NUnit绝对不会将null传递给测试用例:如果它通过了,NUnit自己的测试将失败,我们会从其他人那里听说它



我怀疑您可能正在使用NUnit自己的跑步者以外的其他人来执行测试。是这样吗?

testdrive.NET是罪魁祸首。升级成功。

testdrive.NET是罪魁祸首。升级成功。

如果在单元测试开始时中断并调试
环境
,它的值是多少?开始时的值是HD3,之后它会正确设置。在进行一些测试之后,它似乎将其设置为枚举中的第一个值。
HD3=0
在处理标志时没有意义。如果在单元测试开始时中断并调试
environment
,它的值是什么?开始时的值是HD3,之后它将正确设置它。在做了一些测试之后,它似乎将其设置为枚举中的第一个值。
HD3=0
在处理标志时没有意义。这不是枚举的创建方式,因为它在系统的所有其他方面都起作用。NUnit似乎无法处理TestCase中的枚举。它对我有效,我更新了我的答案以包含我使用的单元测试。这似乎是NUnit的问题-我传入的所有TestCase值都变为null,这将使我看到的有意义。感谢迄今为止的帮助,似乎罪魁祸首是测试驱动的。这不是枚举是如何创建的,因为它在系统的所有其他方面都起作用。NUnit似乎无法处理TestCase中的枚举。它对我有效,我更新了我的答案以包含我使用的单元测试。这似乎是NUnit的问题-我传入的所有TestCase值都变为null,这将使我看到的有意义。感谢迄今为止的帮助,似乎罪魁祸首是TestDriven。NetYes-TestDriven与NUnit的最新版本不兼容。是-TestDriven与NUnit的最新版本不兼容。
[TestFixture]
class EnumFlagsTests
{
    [Test]
    [TestCase(Environments.HD1 | Environments.HD3)]
    public void ShouldBeTrue(Environments input)
    {
        // arrange
        Environments expectedEnum = (Environments.HD1 | Environments.HD3);
        int expectedNumericalValue = 5;

        // assert
        Assert.AreEqual(expectedEnum, input);
        Assert.AreEqual(expectedNumericalValue, (int)input);
    }
}

[Flags]
public enum Environments
{
    None = 0,
    HD1 = 1 << 0, // 1
    HD2 = 1 << 1, // 2
    HD3 = 1 << 2, // 4  
    HD4 = 1 << 3, // 8

    // etc.
}