2013-07-30 37 views
1

我有兩個類:Foo和FooBar。 FooBar來自Foo。我有一個工廠類,給定參數,決定哪個對象實例化和返回。NUnit Assert.IsInstanceOf <T> - 沒有辦法確保不是派生類?

所以我想要有單元測試,驗證我的工廠類正常工作,並返回正確的實例。

這有點乾淨的FooBar的:

​​

但對於富,這是相當混亂:

[Test] 
public void FooFactoryTest() 
{ 
    var testObj = FooFactory(paramsForFooOnly); 
    Assert.IsInstanceOf<Foo>(testObj); //An instance of FooBar would pass this assert 
    Assert.IsNotInstanceOf<FooBar>(testObj); //Can't have just this assert. 
} 

有沒有什麼方法可以讓我重新寫本次測試遵循的範式「每個測試都聲明一次?」優選地,我還想進行測試,以說明Foo或FooBar的潛在附加派生。

回答

7

當然,只要使用Assert.IsTrue

Assert.IsTrue(testObj.GetType() == typeof(Foo)); 

不要覺得你必須只從NUnit的各種「幫手」的方法選擇。

+0

我覺得你的評論頗爲深刻;我很渴望找到「合適的幫手」,簡單而簡單的答案並沒有出現在我身上。 – User

+0

@彼得我認爲在自動化社區中強調選擇的過分強調。你報告了正確的結果嗎?您是否提供了在發生故障時開始調試所需的信息?如果對這兩個問題的答案是肯定的,那麼我對你使用的斷言非常漠不關心。 – evanmcdonnal

相關問題