我在單元測試中遇到了一個我一直無法解決的問題。我認爲最簡潔的說法是:在xUnit/Shouldly/AutoMoq/Autofixture中,我們可以使用InlineAutoMoqData傳入一個Type,它可以在測試中用作<T>?
我希望能夠使用Theory inlineAutoMoqData參數中提供的Type作爲Shouldly的Should.Throw方法中的T.這將允許我創建不同的行測試(我猜這是該框架中的內聯理論),期望不同的異常類型,如果有多個與方法關聯。
我不確定是否有可能,但這裏是單元測試本身的一個例子。
[Theory]
[InlineAutoMoqData("bork", typeof(FileTypeNotRecognizedException))]
public void Build_ReturnsSpecificException_FileNamePassedIn(string fileName, Type expected, ProcessFactory sut)
{
Should.Throw<expected>(() => sut.Build(fileName));
}
我看着這些問題在之前得到難倒並張貼此,分別爲:Dynamically Create a generic type for template和Creating a Generic<T> type instance with a variable containing the Type
是這樣的可能嗎?
編輯:
我看到在我的xUnit可以通過Assert.Throws(類型,代表)方法實現這一目標。
[Theory]
[InlineAutoMoqData("bork", typeof(FileTypeNotRecognizedException))]
public void Build_ReturnsSpecificException_FileNamePassedIn(string fileName, Type expected, ProcessFactory sut)
{
Assert.Throws(expected,() => sut.Build(fileName));
}
我仍然想知道是否有辦法實現它,只要我希望Type屬於通用方法。
爲什麼不在基類測試中放置'[Theory]'和'[InlineAutoMoqData]'屬性? http://blog.ploeh.dk/2011/05/09/GenericunittestingwithxUnit.net那麼你不需要所有的覆蓋。 –
如果內聯數據(fileName)不依賴於異常,那麼您是對的。這似乎並非如此。看起來這個異常會隨着fileName的變化而改變,否則,根本不需要內聯這個異常? –