Junit 面试问题和答案 [适用于初学者和有经验者]
已发表: 2020-09-22对于使用 Java 编程语言的开发人员来说,JUnit 是一个出色的解决方案。 它可用于实现单元测试以及 UI 测试。 对于希望提高代码质量和编程速度的组织来说,它是最受追捧的能力之一。 本文将讨论标准 JUnit 面试问题,以帮助您准备并进入候选名单!
前 15 个 JUnit 面试问题和答案
1.什么是JUnit?
JUnit 是一个用于对 Java 代码进行单元测试的框架。 它被认为是在 JVM 引擎上进行开发者端测试的基础。 因此,JUnit 是编程领域和测试驱动开发不可或缺的一部分。
2、你对测试和单元测试的理解是什么?
测试是检查应用程序是否满足要求并实现所需功能的过程。 单元测试是指评估应用程序的单个功能或单元。
3. 区分手动和自动测试。

手动测试是在没有测试脚本的情况下执行的,并且需要专门的人力来完成所涉及的各个步骤。 另一方面,可以使用技术工具和软件程序在没有人工协助的情况下完成自动化测试。 测试自动化比手动测试更便宜且耗时更少。 此外,手动测试不太可靠,因为它无法编程。
4. 你必须为每一个逻辑写一个测试用例吗?
测试用例是为建立程序逻辑而编写的代码。 在 JUnit 中,没有必要为每个逻辑编写测试用例,而只为那些可以合理破坏的逻辑编写测试用例。
单元测试用例将包括一组输入数据和预期输出。 org.junit 包包含几个类和接口来帮助您进行单元测试,例如 Assert、Test、Before、After 等。
5. 提到一些可以与 JUnit 集成的工具示例?
JUnit 是一个用户友好的 Java 开发框架。 它可以很容易地与 Eclipse IDE、Apache Ant 和 Maven 进行扩展和集成。
6. 列出一些有用的 JUnit 扩展并解释它们的用途。
有四个主要的 JUnit 扩展,即 Cactus、JWebUnit、XMLUnit 和 MockObject。 我们在下面详细描述了它们的用途。
- Cactus:它是一个用于测试服务器端 Java 代码的框架,它在容器内实现测试。 仙人掌生态系统有两个组件,即仙人掌框架和仙人掌集成模块。 框架是为编写测试提供 API 的引擎,而集成模块在插件的帮助下负责前端。
- JWebUnit:这个基于 java 的框架通过结合 HtmlUnit 和 Selenium 的功能提供了一个统一的测试接口。 JWebUnit 使通过链接、表格内容验证、表单输入和提交以及其他功能导航 Web 应用程序变得轻而易举。 除了高级 Java API 之外,它还允许使用即用型断言快速创建测试。
- XMLUnit:它提供了一个名为 XMLTestCase 的扩展类。 XMLUnit 还提供支持类,这些类允许断言关于 XML 片段的有效性(Validator 类)、两个 XML 片段之间的差异(Diff 和DetailedDiff)、转换 XML 的结果(Transformer 类)等等。
- MockObject:当在单元测试中包含真实对象是不可能或不切实际的,模拟对象可以证明是一个福音。 您可以模拟复杂对象的行为并将它们与以下编码步骤合并:
- 创建模拟对象的实例
- 设定状态和期望
- 使用模拟对象作为参数调用域代码
- 验证一致性
7. 你如何测试'protected' 和'private' 方法?
在受保护的方法中,测试类和目标类声明在同一个包中。 但是,在私有方法中,没有直接的测试方法。 您必须将方法更改为“受保护”或手动进行测试。
8. 当返回类型为“字符串”时,JUnit 中会发生什么?
在这种情况下,编译会通过,但执行会失败。 之所以会发生这种情况,是因为所有 JUnit 测试方法都设计为返回“void”。
9. 定义 (i) Fixtures (ii) Test Suit (iii) Test Runner (iv) JUnit 类
(i) 夹具用作执行测试的基准,确定结果的可重复性。 测试夹具包括一组对象的固定状态。 方法包括:
- setUp():它在测试调用之前运行。
- tearDown():它在测试方法之后运行。
(ii) 测试运行器:它执行测试用例。

(iii) JUnit 类:它们包含用于编写和测试 JUnit 的方法。
(iv) 测试套件是要一起运行的单元测试用例的捆绑包或集合。 您可以使用 @Suite 或 @RunWith 注解在 JUnit 中运行套件测试。
阅读: Java 中的图书馆管理系统项目
10. 提几个常用的JUnit注解。
注释只是可以添加到代码中的元标记。 @Test 注解将特定方法标记为测试方法。 其他一些有用的注释包括@Before、@BeforeClass、@After、@AfterClass 和@Ignores。 要实现 JUnit 测试,您需要了解这些注释的重要性。 那么,就让我们一一来了解一下吧。
- Test:这个注解告诉 JUnit 它可以运行 public void 方法作为测试用例。 它基本上是 org.junit.TestCase 的替代品
- 之前:如果要在特定测试用例之前执行任何语句(例如,前置条件),请使用 @Before。 此注释允许您在测试方法之前运行类似的对象。
- Before Class:您可以使用 JUnit 中的 @BeforeClass 注解在所有测试用例之前运行语句。
- After:它会导致一些语句在每个测试用例之后运行,例如删除临时文件、重置变量等。
- After Class: @AfterClass 注解让您可以在所有测试用例之后执行语句。 例如,执行完成后释放所有资源。
- 忽略:用于在执行过程中忽略某些语句。 例如,禁用测试用例。
另请阅读:Java 面试问题
11. 解释不同类型的 JUnit 类。
Assert、TestCase 和 TestResult 是一些重要的 JUnit 类。 Assert 为测试用例提供方法。 TestCase 包含一个测试用例,定义了执行多个测试的夹具。 TestResult 包括收集结果的方法。
12. 你什么时候写单元测试?
在典型的开发周期中,单元测试是在代码之前编写的。 这种做法使开发人员能够保持其代码的质量。
13. 为什么要避免使用 System.out.printIn() 进行调试?
如果你使用 System.out.printIn() 来调试你的代码,从长远来看它会受益。 每次程序运行时,都会导致对整个输出进行手动扫描,以确保代码正常运行。 因此,编写 JUnit 方法和对类文件执行测试所需的时间相对较少。
14、JUnit中的测试垃圾去哪了?
测试运行者在测试期间持有参考资料。 在具有许多测试实例的扩展测试的情况下,可能直到测试运行结束才收集垃圾。 我们可以在测试运行完成之前使用 tearDown() 来收集垃圾。 在这个方法中,我们显式地将一个对象设置为 null。
15.你如何安装Junit?

第一步是下载 JUnit 5,这是 JUnit 的最新版本(它将是一个名为 junit.zip 的文件)。 我们需要将分发文件解压缩到目录 %JUNIT_HOME%。 然后,我们将 JUnit 添加到类路径中。
接下来,我们将测试安装。 这将涉及运行随 Junit 分发的示例测试(不在 junit.jar 文件中,而是在安装目录中)。 最后,我们将确认所有测试都通过了“OK”消息。 如果他们不这样做,我们将返回并验证 junit.jar 是否在类路径中。
查看:如何编写、编译和运行 Java 项目
结论
通过上面的 JUnit 面试问题,你可以复习你的概念,为开发人员的工作做准备。 像测试自动化工程师和软件工程师这样的职位也包括他们想要的技能组合中的 JUnit。 招聘人员想衡量你的技术知识和沟通能力。 因此,您的答案内容以及您如何呈现答案将产生重大影响。
如果您有兴趣了解有关全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发 PG 文凭,该文凭专为在职专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目,以及任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。