如何映射Fitnesse测试引用的所有代码?基于.NET与fitSharp场景
该需求完全可实现,以下是具体落地路径
1. 全量被Fitnesse调用代码映射
你可以通过两种方式组合拿到完整的调用清单:
- 运行时采集:fitSharp的
Processor类加载Fixture类型、绑定执行成员时会统一走FindMember入口,你可以继承DefaultCellProcessor重写该方法,所有被Fitnesse反射调用的方法、属性都会触发这个方法的执行,你可以在这里直接把调用信息写入全局映射表,跑完所有测试用例就能拿到100%准确的运行时调用清单。 - 静态扫描:Fitnesse用例(content.txt)的表格语法规则固定,你可以写正则匹配所有测试表的成员调用:比如决策表的列名对应属性名、脚本表的
|{方法名}|/|check|{属性名}|语法,匹配结果和程序集成员交叉校验,不用跑用例就能拿到静态映射结果。
2. 回调触发访问器实现
两种实现方式可选,适配不同场景:
- 静态织入:用.NET Source Generator在编译期扫描content.txt匹配到的成员,自动给对应成员加上埋点代码,重构过程中如果这些成员的签名被修改、或者成员被删除,编译期就会触发你预设的回调逻辑(比如输出告警、阻断编译、打修改标记)。
- 动态代理:给所有Fixture类套一层Castle DynamicProxy拦截器,所有被Fitnesse反射调用的成员执行前都会先走拦截器逻辑,你可以在拦截器里自定义回调规则,比如统计调用次数、校验入参合法性、记录调用链路。
3. 可检视对象模型构建
把上面扫描/采集到的成员按照所属Fixture类做分类,每个类下挂载关联的被调用方法、属性,再绑定content.txt中对应测试用例的行号、路径,导出为结构化JSON或者可视化Markdown清单,就是你要的可检视对象模型,重构时直接查清单就能明确哪些成员不能随意修改签名。
提示:建议静态扫描+运行时采集结合使用,避免漏扫Fitnesse用例中用变量拼接的动态成员名场景,保证映射结果无遗漏。
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

