0

我在尝试在 Visual Studio 2012 的 UnitTest 项目中对 ViewModel 类进行单元测试时遇到了一个奇怪的问题。我创建了一个 UnitTest 项目并将其添加到我的解决方案中。我添加了我的 WPF 项目作为对我的 UnitTest 项目的引用,以测试我的 ViewModel 类及其方法。问题是我无法访问我的 ViewModel 类。假设我输入:

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

就像 ViewModels 文件夹中没有 MainViewModel 类一样。这里可能是什么问题?

4

1 回答 1

2

这可能是由于您MainViewModel使用 internal 访问修饰符声明了您的类:

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

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

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

[assembly: InternalsVisibleTo("Code")]

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

看,就我而言,我是从 Code 中引用 CodeWPF。另请参阅突出显示的类 AssemblyInfo,它应该很容易解释在哪里定义属性。

在此处输入图像描述

于 2013-06-29T12:46:24.900 回答