更新私人成员的公共void方法的单元测试

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#.

Rob*_*ahl 5

我很粗鲁,所以我认为你应该尝试TDD,因为它有效地防止了这样的不可测试的设计.

在您的特定情况下,我们没有完整的故事.Reset()应该从课外观察效果,否则你不需要这种方法.

现在我不得不猜测调用可能有太多可观察到的影响Reset(),所以测试它们都会很痛苦.我建议将你的课程分为两类,一类是"功能",一类是"重置".然后调用Reset()可重置类的所有效果都是可观察的,你可以测试它们,并且没有其他私人成员之间传递信息的风险Reset()以及您拥有的任何功能的.

更新:总是做Mark Seemann告诉你的事情,因为他是不变的正确的:)