Java开发如何编写出优秀的Java单元测试

 我来答
中公教育IT培训优就业
2018-07-27 · TA获得超过3826个赞
知道大有可为答主
回答量:1457
采纳率:97%
帮助的人:191万
展开全部
  1. 使用框架来用于单元测试

    Java提供了若干用于单元测试的框架。TestNG和JUnit是最流行的测试框架。JUnit和TestNG的一些重要功能:

    易于设置和运行。

    支持注释

    允许忽略或分组并一起执行某些测试。

    支持参数化测试,即通过在运行时指定不同的值来运行单元测试。

    通过与构建陆祥工具,如Ant,Maven和Gradle集成来支持自动化的测试执行。

    EasyMock是一个模拟框架,是单元测试框架,如JUnit和TestNG的补充。EasyMock本身不是一个完整的框架。它只是添加了创建模拟对象以便于测试的能力。例如,我们想要测试的一个方法可以调用从数据库获取数据的DAO类。在这种情况下,EasyMock可用于创建返回硬编码数据的MockDAO。这使我们能够轻松地测试我们意向的方法,而不必担心数据库访问。

  2. 谨慎使用测试驱动开发!

    测试驱动开发(TDD)是一个软件开发过程,在这过程中,在开始任何编码之前,我们基于需求来编写测试。由于还没有编码,测试最初会失败。然后写入最小量的代码以通过测试。然后重构代码,直到被优化。

    目标是编写覆盖所有需求的测试,而不是一开始就写代码,却可能甚至都不能满足需求。TDD是伟大的,因为它导致简单的模块化代码,且易于维护。总体开发速度加快,容易发现缺陷。此外,单元测试被创建作为TDD方法的副产品。

    然而,TDD可能不适合所有的情况。在设计复杂的项目中,专注于最简单的设计以便于通过测试用例,而不提前思考可能会导致巨大的代码更改。此外,TDD方法难以用于与遗留系统,GUI应用程序或与数据库一起工作的应用程序交互的系统。另外,测试需要随着代码的改变而更新。

    因此,在决定采用TDD方法之前,应考虑上述因素,并应根据项目的性质采取措施。

  3. 测量代码覆盖率

    代码覆盖率衡量(以百分比表示)了在运行单元测试时执行的代码量。通常,高覆盖率的代码包含未检测到的错埋雹误的几率要低,因为其更多的源代码在测试过程中被执行。测量代码覆盖率的一些最佳做法包括:

    使用代码覆盖工具,如早液搏Clover,Corbetura,JaCoCo或Sonar。使用工具可以提高测试质量,因为这些工具可以指出未经测试的代码区域,让你能够开发开发额外的测试来覆盖这些领域。

    每当写入新功能时,立即写新的测试覆盖。

    确保有测试用例覆盖代码的所有分支,即if / else语句。

    高代码覆盖不能保证测试是完美的,所以要小心!

  4. 尽可能将测试数据外部化

    在JUnit4之前,测试用例要运行的数据必须硬编码到测试用例中。这导致了限制,为了使用不同的数据运行测试,测试用例代码必须修改。但是,JUnit4以及TestNG支持外部化测试数据,以便可以针对不同的数据集运行测试用例,而无需更改源代码。

  5. 使用断言而不是Print语句

    许多新手开发人员习惯于在每行代码之后编写System.out.println语句来验证代码是否正确执行。这种做法常常扩展到单元测试,从而导致测试代码变得杂乱。除了混乱,这需要开发人员手动干预去验证控制台上打印的输出,以检查测试是否成功运行。更好的方法是使用自动指示测试结果的断言。

  6. 构建具有确定性结果的测试

    一些方法不具有确定性结果,即该方法的输出不是预先知道的,并且每一次都可以改变

  7. 除了正面情景外,还要测试负面情景和边缘情况

    通常,开发人员会花费大量的时间和精力编写测试用例,以确保应用程序按预期工作。然而,测试负面测试用例也很重要。负面测试用例指的是测试系统是否可以处理无效数据的测试用例。例如,考虑一个简单的函数,它能读取长度为8的字母数字值,由用户键入。除了字母数字值,应测试以下负面测试用例:

    用户指定非字母数字值,如特殊字符。

    用户指定空值。

    用户指定大于或小于8个字符的值。

    类似地,边界测试用例测试系统是否适用于极端值。例如,如果用户希望输入从1到100的数字值,则1和100是边界值,对这些值进行测试系统是非常重要的。

瑰丽暮雪
2018-07-26
知道答主
回答量:4
采纳率:0%
帮助的人:3585
展开全部
找你项目经理,问问他
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式