问题标签 [junit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 自动将测试从 JUnit 3 迁移到 JUnit 4 的最佳方法?
我有一堆扩展 TestCase 的 JUnit 3 类,并希望将它们自动迁移为带有注释的 JUnit4 测试,例如@Before
, @After
,@Test
等。
有任何工具可以在大批量运行中执行此操作吗?
java - 如何在 java 中对 jdbc 代码进行单元测试?
我想为连接到数据库的一些代码编写一些单元测试,运行一个或多个查询,然后处理结果。(没有实际使用数据库)
这里的另一位开发人员编写了我们自己的 DataSource、Connection、Statement、PreparedStatement 和 ResultSet 实现,它们将根据 xml 配置文件返回相应的对象。(我们可以使用伪造的数据源并针对它返回的结果集运行测试)。
我们在这里重新发明轮子吗?单元测试是否已经存在类似的东西?还有其他/更好的方法来测试 jdbc 代码吗?
unit-testing - 运行时间最长的单元测试?
我们如何在我们的套件中找到运行时间最长的 junit 测试?junitreport ant 任务的默认输出很有帮助,但是我们的套件将数千个测试组织成许多较小的套件,因此它变得乏味,而且最严重的违规者总是在变化。
我们使用 luntbuild,但理想情况下,我们可以从 ant 中运行它。
java - 单元测试与 Spring 的集成测试
我正在开发一个 Spring MVC 项目,并且我对源代码树中的所有各种组件进行了单元测试。
例如,如果我有一个HomeController
需要LoginService
注入的控制器,那么在我的单元测试中,HomeControllerTest
我只需像平常一样(在 Spring 之外)实例化对象并注入属性:
这对于将每个组件作为一个独立的单元进行测试非常有用——除了现在我在项目中有几十个类,在编写了一个类并为它编写了一个成功的单元测试之后,我一直忘记更新我的 Spring MVC 上下文文件已部署应用程序中的实际接线。我发现当我将项目部署到 Tomcat 时忘记更新上下文文件并从非连线 bean 中找到一堆 NullPointers。
所以,这是我的问题:
这是我的第一个 Spring 项目 - 像我所做的那样为单个 bean 创建单元测试是否正常,然后创建第二套测试(集成测试)来测试所有内容在实际应用程序上下文中是否按预期工作?对此是否有既定的最佳实践?
此外,如何将单元测试与集成测试分开?我有所有源代码
src
,单元测试在test
- 是否应该有第二个测试文件夹(例如test-integration
)用于集成测试用例?
由于这是我的第一个 Spring 项目,我很好奇其他人通常是如何做这种事情的——与其重新发明轮子,我更愿意询问社区的其他人。
java - 2 个 JUnit 断言类之间的差异
JUnit 框架包含 2 个Assert
类(显然在不同的包中),每个类的方法看起来都非常相似。谁能解释这是为什么?
java - EMMA 不会涵盖我的一个项目
我对 EMMA 有一个问题,它正确地涵盖了我所有的各种 Java 项目,除了一个。我很困惑为什么会发生这种情况,因为 ANT 脚本似乎是正确的。给出以下预期输出:
以上是由以下 ANT 脚本生成的:
运行 JUnit 测试后,将记录以下内容。
emma.report:[report] 处理输入文件 ...
[report] 1 个文件在 16 毫秒内读取和合并
[report] 无所事事:在任何数据文件中都找不到运行时覆盖率数据
并且不会生成覆盖率报告。
我确定coverage.emma 文件已正确链接,那么为什么EMMA 没有覆盖代码?
该emma.report
任务如下所示:
java - Java:如何测试调用 System.exit() 的方法?
我有一些方法应该调用System.exit()
某些输入。不幸的是,测试这些情况会导致 JUnit 终止!将方法调用放在新线程中似乎没有帮助,因为System.exit()
终止了 JVM,而不仅仅是当前线程。是否有任何常见的模式来处理这个问题?例如,我可以用存根代替System.exit()
吗?
[编辑] 有问题的类实际上是一个命令行工具,我试图在 JUnit 中进行测试。也许 JUnit 根本就不是适合这项工作的工具?欢迎提出补充回归测试工具的建议(最好是与 JUnit 和 EclEmma 很好集成的工具)。
java - 如何使用线程执行单元测试?
执行摘要:当在线程中抛出断言错误时,单元测试不会死。这是有道理的,因为不应允许一个线程使另一个线程崩溃。问题是我如何 1) 在第一个辅助线程崩溃时使整个测试失败,或者 2) 在每个线程都完成后循环并确定每个线程的状态(参见下面的代码)。实现后者的一种方法是使用每个线程的状态变量,例如,“boolean[] statuses”并且“statuses[i] == false”意味着线程失败(这可以扩展以捕获更多信息)。但是,这不是我想要的:我希望它在抛出断言错误时像任何其他单元测试一样失败。这甚至可能吗?这是可取的吗?
我觉得无聊,我决定在我的单元测试中产生一堆线程,然后让它们调用一个服务方法,只是为了它。代码大致如下:
在此之后,我们将遍历线程数组并启动每个线程。之后,我们将等待他们全部完成。最后,我们将对结果引用进行一些检查。
这就是问题所在。你注意到那个讨厌的 try-catch-throwable 块了吗?我只是将其添加为临时黑客,因此我可以看到发生了什么。在 runTest(String) 中进行了一些断言,例如 assertNotNull(null),但由于它在不同的线程中,它不会导致单元测试失败!!!!
我的猜测是,我们需要以某种方式遍历线程数组,检查每个线程的状态,如果线程以令人讨厌的方式终止,则手动导致断言错误。提供此信息的方法的名称是什么(死线程的堆栈跟踪)。
junit - 从 Hudson 获取有用的电子邮件,而不是 ant log 的尾巴
我的一个团队成员最近为我们的一些开发代码库设置了一些 Hudson 持续集成构建。它使用以简单方式配置的内置 ant 集成。
虽然它非常有用并且我强烈推荐它,但我想知道如何获得更简洁/信息丰富/有用的电子邮件,而不仅仅是 ant 构建日志的尾部。
例如,不要这样:
我假设我可以跳过内置的 ant 支持并通过 grep 脚本发送构建日志,但我希望有一个更集成或更优雅的选项。
junit - 需要一个在 Intellij Idea 中使用 Junit 的示例
也许只有我一个人,但我无法理解 Intellij Idea 中有关 Junit 测试集成的文档。我正在寻找的是一个简单的教程示例,例如:这是一个计算 2+2 的方法,这是一个测试类,测试它为 4。这是您设置的复选框。如果网络上或 Intellij Idea 帮助中已经有这样的东西,请参考我。我使用 Idea 7.0.4,并希望使用 JUnit 3.8 或 4.*。TIA。