簡體   English   中英

使用反射測試抽象類的私有方法

[英]Testing private method of an abstract class using Reflection

如何使用反射(使用C#)測試抽象類的私有方法? 我對修改此線程中的代碼特別感興趣。

我知道圍繞測試私有代碼的原則進行的討論(一般來說不應該這樣!)。 由於各種原因,我已經決定針對我的情況進行此操作,因此,我們不再重復這些討論。 其他SO線程(例如Q#1583363和1506427)對其進行了詳細討論。 謝謝。

根據定義,抽象類無法實例化,因此無法直接對其進行測試。 您可以使用其中一種模擬框架(例如TypeMock) 。否則,您需要創建一個從抽象類繼承的具體類,並將其用於測試。

如果您使用的是VS2008,那么就像右鍵單擊您的私有方法並選擇創建單元測試一樣容易。 VS將創建一個YourAbstractClass_Accessor類,該類將允許您查看和運行該私有方法。

注意:無需其他模擬框架。

您可以執行此操作,盡管這不是反映,但可能會對某人有所幫助。

var concreteClass = new concreteClass();
var po = new PrivateObject(concreteClass, new PrivateType(typeof(AbstractClass)));
Object[] args = new object[] {...};
po.Invoke("PrivateMethod", args);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM