基于单元测试堆栈的虚拟机c#
Unit Testing stack based virtual machine c#
我目前正在开发一个基于堆栈的虚拟机,它从文本文件加载命令,我需要测试 class 增量和减量操作。
我对单元测试还很陌生,但我已经研究了几个示例来掌握语法,但现在我有点卡住了!
当我尝试 运行 测试时,我得到一个空值异常,所以我想我的下一个问题是我最好使用 Moq 或 Fakes 传递一个值来测试它是否通过了预期的结果?
我看过 Fakes 程序集,这是我想出的,但我不确定如何通过 System.Collections
在此之后我陷入困境,任何帮助/建设性的帮助都是极好的。
编辑- 在调用此 class 之前,整数值已被推入堆栈。
听起来您可能会遇到一些摩擦,因为问题的建模有点奇怪。为了我的钱,我会 avoid the difficulty of mocking 重新安排你的问题。例如,如果您将堆栈传递给操作本身,您将获得更自然的测试;
var stack = new Stack();
var op = new Decr();
stack.push(0);
op.Execute(stack);
Assert.AreEqual(-1, stack.Peek());
您将避免在 Decr
class 上出现不必要的状态。这是依赖倒置原则的一个示例,其中依赖对象被传递到 class,而不是由它创建。
我目前正在开发一个基于堆栈的虚拟机,它从文本文件加载命令,我需要测试 class 增量和减量操作。 我对单元测试还很陌生,但我已经研究了几个示例来掌握语法,但现在我有点卡住了!
当我尝试 运行 测试时,我得到一个空值异常,所以我想我的下一个问题是我最好使用 Moq 或 Fakes 传递一个值来测试它是否通过了预期的结果?
我看过 Fakes 程序集,这是我想出的,但我不确定如何通过 System.Collections
在此之后我陷入困境,任何帮助/建设性的帮助都是极好的。
编辑- 在调用此 class 之前,整数值已被推入堆栈。
听起来您可能会遇到一些摩擦,因为问题的建模有点奇怪。为了我的钱,我会 avoid the difficulty of mocking 重新安排你的问题。例如,如果您将堆栈传递给操作本身,您将获得更自然的测试;
var stack = new Stack();
var op = new Decr();
stack.push(0);
op.Execute(stack);
Assert.AreEqual(-1, stack.Peek());
您将避免在 Decr
class 上出现不必要的状态。这是依赖倒置原则的一个示例,其中依赖对象被传递到 class,而不是由它创建。