2012-01-12 76 views
2

我需要更好地瞭解組件何時加載單元測試。什麼時候單元測試加載相關的程序集?

我有一個班(ClassDerived),我是單元測試。 ClassDerived來源於另一類(ClassBase)。

我正在嘗試在運行第一個測試之前使用ClassInitialize屬性初始化ClassDerived。單元測試項目可參考ClassBaseClassDerived

執行ClassInitialize方法中的代碼時,我注意到包含ClassDerived的程序集尚未加載。

我通過查看來自GetAssemblies()的調用的返回值來確定這一點。

var assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); 

奇怪的是裝載了包含ClassBase的程序集。

我試着將初始化代碼移動到具有相同結果的單元測試構造函數。

有誰知道發生了什麼事?

回答

1

我懷疑加載時間不是單元測試所特有的。在.net 3.5中,這是我見過的:

給定一個程序集「X」具有方法「Y」,而方法「Y」使用程序集「Z」中的某些東西。

在這種情況下,程序集「Z」將在方法「Y」執行之前加載。 .net 4.0肯定會在很多方面引入更大的「懶惰」,所以我不知道上述觀察是否仍然正確。

+0

這是正確的。我昨天晚上離開工作時意識到了這一點。添加引用並不意味着該組件將被加載。但是,只要我在構造函數中使用了該組件中的類型,就可以正常工作。我的Win32經驗對我很不利。 – 2012-01-13 14:28:42

相關問題