C# NUnit设置标志';TestCase期间的d枚举
我正在尝试让Nunit的测试用例使用带有标志的枚举: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.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.
}