【发布时间】:2019-12-01 06:42:36
【问题描述】:
我的 UnitTest 的目标是验证 ValidateEquality 是否会为 FooClass 的两个不相等实例返回 false。
我只询问单元测试的安排部分,而行为和断言并不重要。
我有一个构建器外观,它正在创建所需 FooClass (BuilderFacade.BuildFooClass()) 的假实例和创建它的真实实例 (GetFooClassFromSomewhere) 的真实服务 api。
问题在于BuilderFacade 创建了一个随机的E_BooEnum 值,为了让这个单元测试每次都通过,我需要用BooEnum 实例化foolClass2与fooClass1 的BooEnum 随机值不同的值。
如何使用假实例值以外的值启动BooEnum?
[TestMethod]
public void AreEqual_DifferentBooEnum_ShouldReturnFalse()
{
//Arrange:
FooClass fooClass1 = BuilderFacade.BuildFooClass();
FooClass fooClass2 = GetFooClassFromSomewhere();
fooClass2.BooEnum = ! fooClass1.BooEnum // <--------Every possible value is OK besides the `fooClass1.BooEnum` value.
...
//Act
var result = service.ValidateEquality(fooClass1, fooClass2);
//Assert
Assert.IsFalse(result);
}
public class BuilderFacade
{
public static FooClass BuildFooClass()
{
Random rand = new Random();
E_BooEnum booEnum = (E_BooEnum)rand.Next(System.Enum.GetNames(typeof(E_BooEnum)).Length);
return new FooClass()
{
BooEnum = booEnum
};
}
}
型号:
public class FooClass
{
public E_BooEnum BooEnum { get; set; }
public override in GetHashCode()
{
unchecked
{
int hash = 17;
hash = hash * 31 + this.BooEnum.GetHashCode();
}
}
}
【问题讨论】:
标签: c# unit-testing .net-core enums