在C#中,Java的默认(包)访问权限相当于什么?有吗?反正是否限制对特定命名空间的访问?
问题:
我试图限制对某些方法的访问仅限于我的NUnit测试 - 在JUnit中我会通过使方法包访问并在同一个包中但在src/test/java而不是src/main/java下进行测试来实现这一点.如何在C#中实现类似的功能?
注意:我无法制作方法,internal因为我的测试是在一个单独的程序集中 - 就像NUnit惯例一样 - 或者是它?
当我第一次开始使用单元测试时遇到了两个问题.首先是能够测试私人方法和领域,然后在快速开发发生时保持单元测试的最新状态.因此,我采用了以下方法进行单元测试.
#if UNITTEST
using NUnit.Framework;
#endif
public class MyBlackMagic
{
private int DoMagic()
{
return 1;
}
#if UNITTEST
[TestFixture]
public class MyBlackMagicUnitTest
{
[TestFixtureSetUp]
public void Init()
{
log4net.Config.BasicConfigurator.Configure();
}
[Test]
public void DoMagicTest()
{
Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name);
Assert.IsTrue(DoMagic() == 1, "You are not a real magician!");
}
}
#endif
}
Run Code Online (Sandbox Code Playgroud)
我发现这种方法克服了我的两个问题,它是一个预编译器开关的轻弹,以确保所有单元测试编译.
我现在的问题是,我正在转向一个新的项目,其中的谈话是使用单独的程序集来进行单元测试.在我深入研究并开始阐述内部类方法的优点之前,如上所示,我想知道是否有人认为它有任何缺点?
编辑:
只是为了解一些提到的弱点: