C# 获取编译器错误CS0122-';成员';由于其保护级别而无法访问-在尝试访问其他项目中的类时
我正在努力掌握NUnit——我已经在一个项目中安装并成功运行了它。我想将productioncode与testcode分开,所以我在另一个项目中编写测试。测试项目链接到原始项目。(IDE C#Express 2010) 我的测试代码如下所示:C# 获取编译器错误CS0122-';成员';由于其保护级别而无法访问-在尝试访问其他项目中的类时,c#,nunit,compiler-errors,C#,Nunit,Compiler Errors,我正在努力掌握NUnit——我已经在一个项目中安装并成功运行了它。我想将productioncode与testcode分开,所以我在另一个项目中编写测试。测试项目链接到原始项目。(IDE C#Express 2010) 我的测试代码如下所示: using NUnit.Framework; namespace test.Import { [TestFixture] class XMLOpenTest { [Test] public void
using NUnit.Framework;
namespace test.Import
{
[TestFixture]
class XMLOpenTest
{
[Test]
public void openNotAPath(){
try
{
production.Import.XMLHandler.open("Not A Path");
}
catch
{
Assert.Fail("File Open Fail");
}
}
}
}
我知道我可以通过公开production.Import.XMLHandler类来解决这个问题,但是我不想改变我的productioncode来允许这种测试
我该怎么做?我可以修改我的测试代码吗?在两个项目中是否有其他好的方法来分离测试代码和生产代码?互联网上有dummys的资源吗?这通常通过使用解决。请参阅和。将其设置为
*公共*类XMLOpenTest
。。。。它已经为我工作了很多次;)@Machinarius将其公开是我在5月份的案例中所需要的一切,当时我在项目之间复制带有引用的类,thx@bart公开的好处是,你可以轻松一次。但是现在您的类从程序集外部可见。从长远来看,这可能不是你想要的。如果这是一个概念验证项目,它可能仍然是更好的解决方案。如果这是出于商业目的,你应该考虑在你发布后其他人可以访问什么。效果很好。我将[assembly:InternalsVisibleTo(“测试”)]添加到生产的最高级别—现在一切都很好。坦克。