gpt4 book ai didi

c# - Assert.AreEqual 在单元测试期间失败

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:33 25 4
gpt4 key购买 nike

我正在为我正在处理的一个简单的控制台游戏项目运行以下测试,该项目因 Assert.AreEqual 失败而失败。

[TestMethod]
public void TestMethod1()
{
//Arrange
CommandInterpreter interpreter = new CommandInterpreter(new List<IDungeonObject>());
CommandAction commandAction = new CommandAction(CommandEnum.GoNorth, null);
const string north = "Go North";
var expected = commandAction;

//Act
var ogbjecUndertest = interpreter.Translate(north);

//Assert
Assert.AreEqual(expected, ogbjecUndertest);

}

基本上,测试将一个字符串(在本例中为 north)传递给 Translate(north) 方法,该方法随后调用以下代码并根据字符串返回一个 Enum。

public CommandAction Translate(string issuedCommand) // <-- Go North
{
if (issuedCommand.IndexOf(' ') == -1)
throw new InvalidCommandException("No command entered");

if (issuedCommand.Equals("Go South", StringComparison.OrdinalIgnoreCase))
return new CommandAction(CommandEnum.GoSouth, null);

if (issuedCommand.Equals("Go North", StringComparison.OrdinalIgnoreCase))
return new CommandAction(CommandEnum.GoNorth, null);

return null;

该方法接受 CommandAction 类

 public class CommandAction
{
#region Properites

/// <summary>
/// Defines a valid commands
/// </summary>
public CommandEnum Command { get; private set; }

/// <summary>
/// Defines a dungeon object
/// </summary>
public IDungeonObject RelatedObject { get; private set; }

#endregion

#region Constructor

/// <summary>
/// User input action passed in by the dugeon controller
/// </summary>
/// <param name="command"></param>
/// <param name="dungeonObject"></param>
public CommandAction(CommandEnum command, IDungeonObject dungeonObject)
{
Command = command;
RelatedObject = dungeonObject;
}

#endregion

当我调试测试时,Assert expected 将我的 2 个 CommandAction 属性显示为;命令:GoNorth 和 RelatedObject null

我的被测对象显示为;命令:GoNorth 和 RelatedObject:null

所以我的值看起来是正确的,但我不知道为什么测试失败了?

最佳答案

您的 CommandAction 类型没有自定义 .Equals(),因此 AreEqual() 正在对expected 对象和在 Translate 中创建的新对象。它们是不同的实例,因此不相等。测试正确地失败了。

关于c# - Assert.AreEqual 在单元测试期间失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30397151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com