多少我的每个单元的测试,检查?例如,我有这个测试

[TestMethod]
public void IndexReturnsAView()
{
    IActivityRepository repository = GetPopulatedRepository();
    ActivityController activityController = GetActivityController(repository);
    ActionResult result = activityController.Index();
    Assert.IsInstanceOfType(result, typeof(ViewResult));
}

并且还

[TestMethod]
public void IndexReturnsAViewWithAListOfActivitiesInModelData()
{
    IActivityRepository repository = GetPopulatedRepository();
    ActivityController activityController = GetActivityController(repository);
    ViewResult result = activityController.Index() as ViewResult;
    Assert.IsInstanceOfType(result.ViewData.Model, typeof(List<Activity>));
}

显然,如果第一个测试失败后,让会第二测试,所以应当这两个可合并为一个测试有两个说?我的感觉是,更精细的测试和每个小测试检查的速度越快,它将找到导致的失败。然而,有的开销具有巨大的数字非常小的试验,这可能花费的时间中运行的所有测试。

有帮助吗?

解决方案

我建议你打破他们尽可能多的。

有很多原因,恕我直言,最重要的是:

  • 你的一个测试失败了,你想要能够隔离的确切底做错了什么尽快和尽可能安全地.具有的各个试验方法只是测试一个单一的事情是最好的方式来实现这一点。

  • 每次测试需要开始一个清白。如果你创建的仓库,然后利用它在2个或更多的试验,然后你有一个隐含的依赖性在这些试验。说Test1增加了一个项目的储存库,但忘记了要删除它。测试2的行为现在将不同,并可能引起你的测试失败。唯一的例外是不可改变的数据。

关于你的速度问题,我不会担心它。为纯粹的编码处理像这样的.净是 非常 快,你会永远不能告诉差异。一旦你得到了代码处理,并引入了一个数据库,然后你会感觉到的性能的问题,但是尽快这样做,你遇到的所有的"清洗石板"的问题,如上所述,所以你可能只是有生活(或使尽可能多的数据不可变为可能)。

好运与你的测试。

其他提示

在更细粒度越好。当断言在测试情况下发生故障,则测试情况下,不进一步运行任何。的情况下的后部分有可能发现其他错误。

如果还有的共享的测试的情况下,利用安装/拆卸功能之间的代码来照顾,没有重复自己太多。时间成本往往是可以忽略不计。如果安装/拆卸需要太多的时间,你可能没有做单元测试,但一些更高级别的自动化测试。单元测试理想地不应该有文件系统,网络,数据库等的依赖关系。

我觉得“标准”答案是,它应该得到的一点是,如果没有在代码中的错误,它应该打破一个测试,但不隐藏任何其它故障(不停止从正在运行的其他测试)时这一次失败。每个测试测试一两件事,两个测试不测试同样的事情。这是一个理想的,并不总是acheivable。称之为指导。

这就是说,它是一个真正的技术。我将首先抛开性能问题,更加注重维护。有你有两年半到三年的行重复。如果设计变更,将获得难以维持。复制本身可以通过设置方法在类在这种情况下的一个日提交的解决,但担心主要的是可维护性。

测试应该是小到足以维护,易于理解,有什么东西,它使合理的人(或者你的时间过去之后),以了解代码的作用,并能保持测试。

一个单元测试应完全测试,什么是在技术设计在功能设计的角度进行描述。

方法上的多少个测试试验是肯定的东西,你需要来决定的前线,坚持下去。我不相信,每个人都应该遵循同样的做法均匀,因为不同小组和/或项目的有不同的优先事项,向编码,表现,排除故障,试验基础设施,等等。但是一致的总是会有所帮助:

  1. 快确定问题因为 你事先知道如何深挖;
  2. 花更少的时间来建造 你的测试;
  3. 采用同一套 的测试的辅助课程的同时 执行测试。
  4. 运行测试的速度不够快:不过快速和不太缓慢。
  5. 组织测试(套房,包,等等。)

如果你决定性是更重要的然后执行更厚的测试更多的验证/asserttions.如果你决定,排除故障是一个至关重要,然后隔离你的测试,尽需要。我不能看为什么厚和结构良好测试的缺陷。这种试验将得到同样的工作,做更大量的薄试验,只是因为好。

当然,每一个测试仍然需要专注于特定的功能/功能,但这不是真的主题的这个线程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top