C# 如何测试void方法?

C# 如何测试void方法?,c#,unit-testing,tdd,C#,Unit Testing,Tdd,我有一些无效的方法,我需要测试它们,但我不确定如何去做。我只知道如何使用Assert测试返回某些内容的方法。 有人知道怎么做吗?你们知道这种风格的练习的一些链接吗?你们可以测试两件事: void方法调用后的状态更改(基于状态的测试) void方法调用期间与依赖项的交互(交互测试) 第一种方法很简单(NUnit示例): 第二种方法要求(最低起订量样本): var dependencyMock=new Mock(); dependencMock.Setup(d=>d.Something(bar)

我有一些无效的方法,我需要测试它们,但我不确定如何去做。我只知道如何使用Assert测试返回某些内容的方法。
有人知道怎么做吗?你们知道这种风格的练习的一些链接吗?

你们可以测试两件事:

  • void方法调用后的状态更改(基于状态的测试)
  • void方法调用期间与依赖项的交互(交互测试)
第一种方法很简单(NUnit示例):

第二种方法要求(最低起订量样本):

var dependencyMock=new Mock();
dependencMock.Setup(d=>d.Something(bar));//设置交互
var sut=新sut(dependencyMock.Object);
sut.exercise(foo);
dependencyMock.VerifyAll();//验证sut是否与依赖项交互

当然,您还可以测试是否抛出了适当的异常。

如果这些方法没有做任何您可以从外部观察到的事情,它们在做什么有用的工作?
var sut = new Sut();
sut.Excercise(foo);
Assert.That(sut.State, Is.EqualTo(expectedState)); // verify sut state
var dependencyMock = new Mock<IDependency>();
dependencyMock.Setup(d => d.Something(bar)); // setup interaction
var sut = new Sut(dependencyMock.Object);
sut.Excercise(foo);
dependencyMock.VerifyAll(); // verify sut interacted with dependency