2013-12-16 146 views
6

我有一些無效的方法,我需要測試它們,但我不知道如何去做。我只知道如何使用Assert來測試返回某些東西的方法。有人知道如何做到這一點?你們知道這種風格與練習的一些聯繫嗎?如何測試void方法?

+0

如果這些方法沒有做任何你能從外部觀察到的事情,他們在做什麼有用的工作? –

回答

10

您可以測試兩兩件事:無效的方法調用(基於狀態的測試)

  • 互動與無效的方法調用(交互測試)
  • 第一種方法中的依賴後

    • 狀態變化很簡單(NUnit樣品):

      var sut = new Sut(); 
      sut.Excercise(foo); 
      Assert.That(sut.State, Is.EqualTo(expectedState)); // verify sut state 
      

      第二種方法要求小號mocks(MOQ樣品):

      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 
      

      好了,你也可以測試是否合適引發異常。