在尝试在Visual Studio 2012中的UnitTest项目中单元测试我的ViewModel类时,我遇到了一个奇怪的问题。我创建了一个UnitTest项目并将其添加到我的Solutinon中。我添加了我的WPF项目作为我的UnitTest项目的参考,以测试我的ViewModel类及其方法。 问题是我无法访问我的ViewModel类。 让我们说我输入:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
MyWPFProject.ViewModels.MainViewModel
}
}
它的作用就像ViewModels文件夹中没有MainViewModel类。这可能是什么问题?
答案 0 :(得分:1)
这可能是由于您使用内部访问修饰符声明MainViewModel
类:
namespace ViewModels
{
internal class MainViewModel
{
...
}
}
内部访问修饰符限制了对定义程序集(在本例中为WPF项目)的可见性。如果要从外部程序集(在本例中为测试项目)访问该类,可以将访问修饰符更改为public或使用InternalsVisibleTo
属性。
InternalsVisibleTo
程序集属性允许您指定可以查看程序集内部成员的“朋友”程序集。要定义属性,请打开AssemblyInfo.cs(默认情况下应该在您的项目中 - 扩展解决方案资源管理器中的“属性”节点)并粘贴以下任何其他程序集属性:
[assembly: InternalsVisibleTo("Code")]
将字符串“Code”更改为单元测试项目的名称。
在我看来,我在Code中引用了CodeWPF。另请参见突出显示的类AssemblyInfo,它应该是非常自我解释在哪里定义属性。