在.net 1.1下一个比较好的方法是(经寒枫提示)
using System;
namespace idior
{
public class Tested
{
#if (DEBUG)
public
#else
private
#endif
string PrivateMethod(string str)
{
//do something
return str;
}
}
}
在.net 2.0下又多了一种方法 partial class
原来的类不变
namespace idior
{
public partial class Tested
{
private string PrivateMethod(string str)
{
//Do something
return str;
}
}
}
再为测试写一个class
namespace idior
{
[TestFixture]
public partial class Tested
{
Tested tested;
[SetUp]
public void Setup()
{
tested = new Tested();
}
[Test]
public void TestPrivateMethod()
{
Assert.AreEqual(tested.PrivateMethod("hello"), "hello");
}
}
}
这两种方法各有优缺点
1 优点:源文件不用引入nunit.framework.dll
缺点:有一定危险,因为当该类被其他类使用的时候,会把这个私有方法当成public
2. 优点:没有危险
缺点:会引入nunit.framework.dll当然你可以把它放到其他文件夹,发布时删除不过麻烦.
还有一个方法就是使用反射,你又会使用哪种?
方法三:
为要测试的类添加一个继承的子类.在子类中实现Get方法实现对私有成员的访问.如果在Java中还可以将这个
子类设为Test中的Inner Class.
优点: 比反射安全,比前面的方法简单.
缺点: private 变量要变成protected
体会:
XUnit只是通过验证interface.主要思想对某个方法的输入验证它的输出.这种黑盒的测试工具能很大程度上保证
代码的安全,并能驱动开发.但是对于方法的执行过程缺少控制,可能需要更加细致的测试工具来实现对方法的
执行过程的测试(这里仍然指得是程序员测试)虽然这种情况不是非常多.AOP或许能为实现这种测试作出贡献.


















原来的类不变






























这两种方法各有优缺点
1 优点:源文件不用引入nunit.framework.dll
缺点:有一定危险,因为当该类被其他类使用的时候,会把这个私有方法当成public
2. 优点:没有危险
缺点:会引入nunit.framework.dll当然你可以把它放到其他文件夹,发布时删除不过麻烦.
还有一个方法就是使用反射,你又会使用哪种?
方法三:
为要测试的类添加一个继承的子类.在子类中实现Get方法实现对私有成员的访问.如果在Java中还可以将这个
子类设为Test中的Inner Class.
优点: 比反射安全,比前面的方法简单.
缺点: private 变量要变成protected
体会:
XUnit只是通过验证interface.主要思想对某个方法的输入验证它的输出.这种黑盒的测试工具能很大程度上保证
代码的安全,并能驱动开发.但是对于方法的执行过程缺少控制,可能需要更加细致的测试工具来实现对方法的
执行过程的测试(这里仍然指得是程序员测试)虽然这种情况不是非常多.AOP或许能为实现这种测试作出贡献.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!