2013-06-29 86 views
0

我嘗試在Visual Studio 2012中單元測試UnitTest項目中的ViewModel類時遇到了一個奇怪的問題。我創建了一個UnitTest項目並將其添加到了我的Solutinon中。我添加了我的WPF項目作爲我的UnitTest項目的參考,以測試我的ViewModel類及其方法。 問題是我無法訪問我的ViewModel類。 可以說,I型:訪問單元測試項目中的WPF類

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void TestMethod1() 
    { 
     MyWPFProject.ViewModels.MainViewModel 
    } 
} 

它像個存在的ViewModels文件夾中沒有MainViewModel類。這裏可能是什麼問題?

回答

1

這可能是由於您使用內部訪問修飾符聲明你MainViewModel類:

namespace ViewModels 
{ 
    internal class MainViewModel 
    { 
     ... 
    } 
} 

內部訪問修飾符,能見度低的定義組件(在這種情況下,您的WPF項目)。如果要從外部程序集(在本例中爲測試項目)訪問該類,則可以將訪問修飾符更改爲public或使用InternalsVisibleTo屬性。

程序集屬性InternalsVisibleTo允許您指定可以查看您的程序集內部成員的「朋友」程序集。要定義屬性,打開AssemblyInfo.cs中(應該在你的項目中默認 - 延長在Solution Explorer中的「屬性」節點),並粘貼以下之外的任何其他組件的屬性:

[assembly: InternalsVisibleTo("Code")] 

更改字符串「代碼」作爲您的單元測試項目的名稱。

請參閱我的情況,我是從Code引用CodeWPF。另請參見突出顯示的類AssemblyInfo,它應該是非常明顯的定義屬性的地方。

enter image description here

+0

感謝公衆訪問修飾符解決問題,但你可以給我使用InternalsVisibleTo –

+0

@ZoroRoronoa NP的一些例子。我更新了我的帖子。 –

+0

感謝您的詳細說明,將此添加到AssemblyInfo中,使得我的UnitTestProject中的所有類和方法都可見,因爲它們都默認爲內部的。非常感謝 :) –