单元测试 – 单元测试采用

前端之家收集整理的这篇文章主要介绍了单元测试 – 单元测试采用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们试图向我们当前的项目引入单元测试,但它似乎并不工作。额外的代码似乎已经成为一个维护头痛,当我们的内部框架更改,我们必须解决任何单元测试挂起它。

我们有一个抽象基类,用于单元测试我们的控制器,作为模板调用到子类的抽象方法实现,即框架调用初始化,所以我们的控制器类都有自己的初始化方法

我曾经是一个单位测试的倡导者,但它似乎并不在我们当前的项目。

任何人都可以帮助识别问题,我们如何使单元测试工作对我们,而不是对我们?

提示

避免编写程序代码

如果测试是针对严重依赖于全局状态的程序性代码编写的,那么测试可以是一个负担,否则它会陷入一个丑陋的方法
如果你用OO语言编写代码use OO constructs有效地减少这种情况。

>避免全局状态,如果可能的话。
>避免静态,因为它们倾向于通过你的代码库,最终导致事情是静态的,不应该。他们也膨胀你的测试上下文(见下文)。
>有效利用多态性以防止excessive ifs and flags

找到什么变化,封装它,并将它与保持不变的分离。

代码中的阻塞点比其他代码更频繁地变化。在你的代码库中做这个,你的测试将变得更健康。

>良好的封装导致良好的松耦合设计。
>重构和模块化。
>保持测试小,重点。

测试环境越大,维护越困难。

做任何你可以收缩测试和执行它们的周围环境。

>使用组合方法重构来测试更小的代码块。
>您是否使用更新的测试框架,如TestNG或JUnit4?
它们允许您通过在测试生命周期中提供更细粒度的钩子来消除测试中的重复。
>使用测试双精度(mocks,fakes,stubs)调查以减少测试上下文的大小。
>调查Test Data Builder图案。

从测试中删除重复,但确保它们保持焦点。

您可能无法删除所有重复,但仍然尝试删除它导致疼痛的地方。确保你不要删除那么多的重复,有人不能进来,告诉测试的一瞥。 (见Paul Wheaton的“Evil Unit Tests”文章对同一概念的另一种解释。)

>没有人会想要修复一个测试,如果他们不能弄清楚它在做什么。
>按照排列,行动,断言模式。
>每次测试只使用一个断言。

在正确的级别测试您要验证的内容

考虑记录和回放Selenium测试中涉及的复杂性,以及在测试单个方法时可能发生什么变化。

>彼此隔离依赖关系。
>使用依赖注入/反转控制。
>使用测试双精度来初始化一个对象进行测试,并确保您单独测试单个代码单元。
>确保你正在写相关的测试

>“弹簧陷阱”,通过故意引入一个bug,并确保它被测试捕获。

>参见:Integration Tests Are A Scam

知道什么时候使用基于状态的基于交互的测试

真正的单元测试需要真正的隔离。单元测试不会碰到数据库或打开套接字。停止嘲笑这些互动。验证您与协作者正确地通信,而不是该方法调用的正确结果是“42”。

演示测试驾驶规范

对于一个给定的团队是否需要测试驱动所有代码,或者为每行代码编写“测试第一”,这是值得争论的。但是他们应该至少写一些测试吗?绝对。有些情况下,测试优先无疑是处理问题的最好方法

>尝试这个练习:TDD as if you meant it (Another Description)
>参见:Test Driven Development and the Scientific Method

资源:

> Test Driven by Lasse Koskela
> Growing OO Software,Guided by Tests by Steve Freeman and Nat Pryce
> Working Effectively with Legacy Code by Michael Feathers
> Specification By Example by Gojko Adzic
>博客结帐:Jay FieldsAndy GloverNat Pryce
>如在其他答案已经提到:

> XUnit模式
>测试气味
> Google测试博客
>“OO Design for Testability”作者Miskov Hevery

>“Evil Unit Tests”作者:Paul Wheaton
> J.B.Rainsberger的“Integration Tests Are A Scam
> J.B.Rainsberger的“The Economics of Software Design
>“Test Driven Development and the Scientific Method”by Rick Mugridge
>“TDD as if you Meant it”练习最初由Keith Braithwaite,还是workshopped由Gojko Adzic

原文链接:https://www.f2er.com/javaschema/282948.html

猜你在找的设计模式相关文章