问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JUnit VS TestNG

发布网友 发布时间:2022-10-31 11:00

我来回答

1个回答

热心网友 时间:2023-10-16 11:12

软件开发经历了许多阶段,如需求收集和分析、设计、软件开发、测试和发布。测试是 SDLC 不可或缺的一部分,单元测试是一种可靠的测试类型。像 JUnit 和 TestNG 这样优秀的单元测试框架已经成为主流选择,但是关于 TestNG 与 JUnit 的差异的争论一直存在。

测试不是单一的活动,而是涵盖各种测试场景。它以不同的方式分类,其中一种是基于测试级别,例如集成、单元和系统测试。

单元测试涉及测试软件产品中最微小的代码。目的是检查代码的每个组件的质量是否按预期执行。它在开发阶段执行。隔离一段代码以确保其有效性和准确性。代码的单个组件可以是函数、模块、对象或方法。单元测试总是在集成测试之前进行。它有助于在应用程序开发生命周期的早期阶段发现缺陷。开发人员使用不同的单元测试框架来创建单元测试的自动化测试用例。市场上有不同的工具可用于执行单元测试,如 JUnit、NUnit、PHPUnit、JMockit等。

JUnit 于 1997 年作为一个开源的基于 Java 的单元测试框架推出。它是 XUnit 的一部分,它是单元测试框架家族的代表。它允许开发人员编写和运行可重复的测试。

TestNG 是一个基于 Java 的单元测试框架,具有新的和改进的功能。这些新功能包括灵活的测试配置、参数支持、数据驱动测试、注释、各种集成等等。TestNG 执行单元、端到端和集成测试。TestNG 生成报告,帮助开发人员了解所有测试用例的通过、失败和跳过状态。

了解 TestNG 和 JUnit 测试框架之间的区别,有助于选择最适合单元测试框架。

虽然 TestNG 和 JUnit 都是最顶级的基于 Java 的自动化框架,并且各有优缺点。下面分享 JUnit 和 TestNG 框架之间的主要差别:

测试套件由一组测试用例组成,允许同时执行测试。测试套件功能在 JUnit 的早期版本中是不允许的,但在 JUnit 5 中引入,而 TestNG 早早地就支持了该功能。尽管两者都有测试套件,但它们在每个测试套件上执行测试的方式存在关键差异。让我们看一下显示测试套件如何在两个框架中运行的代码片段。

TestNG中的测试套件从 XML 文件运行:

而在 JUnit 中,使用 @RunWith 和 @Suite 等注释,如下面的代码片段所示。两个类 JUnit1 和 JUnit2 是使用注解 @Suite 编写的。

使用 TestNG 对测试人员来说更容易,因为它为他们提供了使用测试套件的多种选择。例如,可以通过将类*到组中来执行测试套件。

FEATURE JUNIT 5 TESTNG 将该方法标记为测试方法 @Test @Test 它在类的第一个测试方法之前执行 @BeforeAll @BeforeClass 它在当前类的所有测试方法都执行完之后执行 @AfterAll @AfterClass 它在每个测试方法之前执行 @BeforeEach @BeforeMethod 在每个测试方法之后执行 @AfterEach @AfterMethod 它在套件中的所有测试运行之前执行 NA @BeforeSuite 它在套件中的所有测试都运行后执行 NA @AfterSuite 测试前执行 NA @BeforeTest 测试后执行 NA @AfterTest 在任何这些组的第一个测试方法之前执行 NA @BeforeGroups 在任何这些组的第一个测试方法之后执行 NA @AfterGroups 忽略测试 @Disabled (In JUnit4 it is @ignore) @Test(Enable=false) 预期异常 @Test(expected=Arithmetic @Test(expectedException=Arithmetic Exception.class) 超时 @Timeout @Test(timeout = 1000)

PS:在 JUnit 4 中, @BeforeClass 和 @AfterClass 方法被认为是静态的,而在 TestNG 中没有这样的*。

管理测试执行是一项重要任务;与 JUnit 相比,TestNG 使这项任务更容易。

这个功能目前只有 TestNG 支持。 它涉及通过创建多个组来执行任务。每个都包含各种测试类,并且可以在单独的组中运行测试,而不是运行孤立的测试。它使用 @Test 注解中的参数。

@Test(groups={"groupname1",..,})

在 TestNG 中,可以在 或 标记下轻松识别。

不需要执行来自大型测试套件的某些测试,尤其是只想测试特定功能时。此功能包含了是否应忽略或考虑特定的单元测试。JUnit和TestNG都配备了这个特性,以及前面讨论的所有注释。在 JUnit 中,此功能使用 @ignore 注解:

而在 TestNG 中,它使用 @Test(enabled = false) 注释运行。

参数化可以理解是数据驱动的测试,可以减少代码量并提高其可读性。TestNG 与 JUnit 提供此功能的方式有所不同。TestNG有一种简单的方法来修复测试用例中的参数。它利用 @Parameter 注释并将参数添加到给定的测试方法。 browser 的值在 XML 文件(例如 testng.xml )中说明,而 JUnit 使用 @ParameterizedTest 注释。

这个功能表示一种测试方法何时依赖于另一种测试方法。JUnit目前不支持此功能。TestNG支持多种类型的测试。在TestNG中,依赖方法使用 @DependsOnMethods 注解。

此功能验证在测试执行期间遇到错误时要使用的异常。TestNG 和 JUnit 都支持此功能,但处理异常的方式略有不同。TestNG 在 @Test 注解中使用了 expectedException 参数 。

在 JUnit 中, assertThrows API 用于异常处理:

这个功能指测试执行中的超时功能,该功能设置时间*,当超过该时间*时,测试会自动失败。TestNG 和 JUnit 都以相同的语法提供此功能。

JUnit:

TestNG:

许多测试框架都支持自动化测试,具体取决于测试的目标。TestNG 和 JUnit 都是自动化单元测试领域最受信任的框架。TestNG 克服了 JUnit 的诸多不便,简化了测试人员的工作。使用 TestNG,可以执行单元测试、集成测试和端到端测试,而 JUnit 仅涵盖单元测试。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我老是容易出汗,不管夏天还是冬天,只要一活动就出汗。这样要怎么... 一年四季长期爱出汗,一动就大汗淋淋 交通事故次要责任可以构成工伤认定吗 ...认定工伤九级,付次要责任那企业一次性伤残就业补助金也按_百度知... 交通事故次要责任工伤赔偿标准 才生下来的乌龟吃什么 大蒜四月份管理要点 HR要学什么 HR所需的法律 耳夹式耳机有哪些优点?蛇圣星环耳夹式耳机实测分享 如何让testng输出测试报告输出在哪里 绩效考核方案有哪些 养老保险补缴新政策最新规定 测量场效应管要将它放电吗 为什么测量场效应管的输入电阻时要用测量输出电压 《西游记》读书笔记 第五、六章 初三毕业的日子作文 二手门面过户房产局和地税局都需要房产评估价格报告,评估机构是谁指定,可以买通评估人把价做低吗? 末伏养生语录 夏练三伏经典语录 征地区片综合地价的简介 农用地分等定级的有关资料那里可以查询的到啊? 国庆适合去哪旅游呢? 希望我能长命百岁 好看的轻松搞笑的穿越小说 伤仲永造成仲永命运悲惨的原因是什么 有什么证据cf是抄袭的cs呢?都说cf垃圾,为什么还有那么多人玩啊?都说穿越太坑,是你自己太操蛋吧 简单就是幸福的作文700字:采撷幸福 青春正能量励志语录74条 《这个穿越太难了》txt下载在线阅读全文,求百度网盘云资源 我想问问怎么查高校历年录取分数线 eclipse 怎么查看testng的测试报告 Android studio中robotium如何用testng生成报告 工匠精神的精彩语段 大家都是好朋友小班教案 求《猫》郑振铎仿写600字,急啊啊啊啊啊啊啊! 模仿郑振铎写的《猫》 写一篇作文 600字 青浦高级中学的特色班级 百家姓观后感5篇 我可以考上上海中学吗.. 复旦附中,真的那么出色吗 高三化学怎么复习。给点详细的计划。 高二同学需知的备考策略 高二学生准备高考复习的日常计划 高二的高考备考计划 浦东哪里有学口琴的地方(最好要是布鲁斯口琴的) 幸福一家作文 雅思阅读强化训练原则 全国青少年穿越赛有多少人参加? 读一读,为国家富强而奋斗的杰出人物的故事?