我目前有以下方法:
public void SetNewRandomValue() {
double newValue = numberGenerator.GenerateDouble(
genesValuesInterval.MinimumValue,
genesValuesInterval.MaximumValue
);
this.value = newValue;
}决定对此方法进行多少测试(以及哪些测试)的指导原则应该是什么?我目前已经完成了以下工作(仅在实现该方法之后--即,不是test-first):
var interval = new Interval(-10, 10);
var numberGeneratorMock = new Mock<INumberGenerator>(MockBehavior.Strict);
var numberGenerator = numberGeneratorMock.Object;
double expectedValue = 5.0;
numberGeneratorMock.Setup(ng =>
ng.GenerateDouble(interval.MinimumValue, interval.MaximumValue))
.Returns(expectedValue);
var gene = new Gene(numberGenerator, 0, new Interval(-10, 10));
gene.SetNewRandomValue();
Assert.AreEqual<double>(expectedValue, gene.Value);这基本上只测试了一种情况。回归测试我会说,我想不出一种方法来把代码搞乱,把它变成功能不佳的代码,而仍然有测试通过,也就是说,我认为这个方法看起来被很好地覆盖了。
你对此有何看法?你将如何处理这个小方法?
谢谢
发布于 2010-12-04 04:07:52
如果您的测试框架有可用的代码覆盖率,我会使用您使用的任何测试工具来检查代码覆盖率。
我个人喜欢使用Microsoft Testing Tool或NUnit Testing Framework。然后,我可以右键单击我的测试项目和Test with NCover (在使用NUnit时),这将运行测试,并告诉我每个对象和测试覆盖的代码百分比。
我要说的是,当你检查完代码覆盖率时,你的代码很可能会得到很好的测试。
发布于 2010-12-04 04:20:08
我推荐使用Pex --它确实可以帮助生成你想要的那种单元测试(即在给定方法和返回值的情况下,找出不同的潜在路径和结果)。
发布于 2010-12-04 04:38:19
这个测试看起来没问题。关于SetNewRandomValue,您可以真正断言的唯一一件事是,Value成员是在之后分配的。您已经模拟了对GenerateDouble的调用,并验证了Value包含预期的数字,因此您应该很好。
https://stackoverflow.com/questions/4349398
复制相似问题