访问单元测试项目中的WPF类

时间:2013-06-29 12:34:52

标签: c# wpf unit-testing visual-studio-2012

在尝试在Visual Studio 2012中的UnitTest项目中单元测试我的ViewModel类时,我遇到了一个奇怪的问题。我创建了一个UnitTest项目并将其添加到我的Solutinon中。我添加了我的WPF项目作为我的UnitTest项目的参考,以测试我的ViewModel类及其方法。 问题是我无法访问我的ViewModel类。 让我们说我输入:

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

它的作用就像ViewModels文件夹中没有MainViewModel类。这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

这可能是由于您使用内部访问修饰符声明MainViewModel类:

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

内部访问修饰符限制了对定义程序集(在本例中为WPF项目)的可见性。如果要从外部程序集(在本例中为测试项目)访问该类,可以将访问修饰符更改为public或使用InternalsVisibleTo属性。

InternalsVisibleTo程序集属性允许您指定可以查看程序集内部成员的“朋友”程序集。要定义属性,请打开AssemblyInfo.cs(默认情况下应该在您的项目中 - 扩展解决方案资源管理器中的“属性”节点)并粘贴以下任何其他程序集属性:

[assembly: InternalsVisibleTo("Code")]

将字符串“Code”更改为单元测试项目的名称。

在我看来,我在Code中引用了CodeWPF。另请参见突出显示的类AssemblyInfo,它应该是非常自我解释在哪里定义属性。

enter image description here