在.net 1.1下一个比较好的方法是(经寒枫提示)
如何测试私有方法?(TDD)using System;
如何测试私有方法?(TDD)
如何测试私有方法?(TDD)
namespace idior
{
如何测试私有方法?(TDD)    
public class Tested
{
如何测试私有方法?(TDD)       
#if (DEBUG)
如何测试私有方法?(TDD)        
public
如何测试私有方法?(TDD)
#else 
如何测试私有方法?(TDD)        
private 
如何测试私有方法?(TDD)
#endif
如何测试私有方法?(TDD)            
string PrivateMethod(string str)
{
如何测试私有方法?(TDD)             
//do something
如何测试私有方法?(TDD)
             return str;
如何测试私有方法?(TDD)        }

如何测试私有方法?(TDD)    }

如何测试私有方法?(TDD)}
在.net 2.0下又多了一种方法 partial class
原来的类不变
如何测试私有方法?(TDD)namespace idior
{
如何测试私有方法?(TDD)    
public partial class Tested
{
如何测试私有方法?(TDD)        
private string PrivateMethod(string str)
{
如何测试私有方法?(TDD)            
//Do something
如何测试私有方法?(TDD)
            return str;
如何测试私有方法?(TDD)        }

如何测试私有方法?(TDD)    }

如何测试私有方法?(TDD)}
再为测试写一个class
如何测试私有方法?(TDD)namespace idior
{
如何测试私有方法?(TDD)    [TestFixture]
如何测试私有方法?(TDD)    
public partial class Tested
{
如何测试私有方法?(TDD)        Tested tested;
如何测试私有方法?(TDD)        [SetUp]
如何测试私有方法?(TDD)        
public void Setup()
{
如何测试私有方法?(TDD)            tested 
= new Tested();
如何测试私有方法?(TDD)        }

如何测试私有方法?(TDD)        [Test]
如何测试私有方法?(TDD)        
public void TestPrivateMethod()
{
如何测试私有方法?(TDD)            Assert.AreEqual(tested.PrivateMethod(
"hello"), "hello");
如何测试私有方法?(TDD)        }

如何测试私有方法?(TDD)
如何测试私有方法?(TDD)    }

如何测试私有方法?(TDD)}

这两种方法各有优缺点
1  优点:源文件不用引入nunit.framework.dll
    缺点:有一定危险,因为当该类被其他类使用的时候,会把这个私有方法当成public
2. 优点:没有危险
    缺点:会引入nunit.framework.dll当然你可以把它放到其他文件夹,发布时删除不过麻烦.

还有一个方法就是使用反射,你又会使用哪种?

方法三:
为要测试的类添加一个继承的子类.在子类中实现Get方法实现对私有成员的访问.如果在Java中还可以将这个
子类设为Test中的Inner Class.
优点: 比反射安全,比前面的方法简单.
缺点: private 变量要变成protected

体会:
XUnit只是通过验证interface.主要思想对某个方法的输入验证它的输出.这种黑盒的测试工具能很大程度上保证
代码的安全,并能驱动开发.但是对于方法的执行过程缺少控制,可能需要更加细致的测试工具来实现对方法的
执行过程的测试(这里仍然指得是程序员测试)虽然这种情况不是非常多.AOP或许能为实现这种测试作出贡献.

相关文章: