Sea*_*ean 0 c# unit-testing xunit
我有以下公共无效方法:
public void Reset()
{
// Get updates
// update logic for each value in _dict
}
Run Code Online (Sandbox Code Playgroud)
而_dict是该类的私有成员:
private readonly dictionary<string, string> _dict;
Run Code Online (Sandbox Code Playgroud)
如何在Reset()方法的更新逻辑上执行单元测试?如何在重置后验证_dict中的值是否正确?我不想为_dict设置公共getter来公开它.
我正在使用xunit和C#.
我很粗鲁,所以我认为你应该尝试TDD,因为它有效地防止了这样的不可测试的设计.
在您的特定情况下,我们没有完整的故事.Reset()应该从课外观察效果,否则你不需要这种方法.
现在我不得不猜测调用可能有太多可观察到的影响Reset(),所以测试它们都会很痛苦.我建议将你的课程分为两类,一类是"功能",一类是"重置".然后调用Reset()可重置类的所有效果都是可观察的,你可以测试它们,并且没有其他私人成员之间传递信息的风险Reset()以及您拥有的任何功能的.
更新:总是做Mark Seemann告诉你的事情,因为他是不变的正确的:)