问题标签 [junit-rule]
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.
spring - 如何将来自规则的值注入测试弹簧上下文?
假设您在测试弹簧上下文时遇到以下情况
现在我的一个 Spring bean 需要一些只能脱离规则的东西,比如:
如何为我的 bean 提供该配置,请注意该规则是 ClassRule 并且也是静态的...
junit - 如何编写 Junit 测试用例来测试 Google api(目录 api)的使用
目前代码是这样开始的
我不确定如何为它编写测试用例,或者我什至应该编写一个测试用例。在这里写一个测试用例到底意味着什么。
java - 如何在 JUnit 4.12 中结合 @Rule 和 @ClassRule
根据4.12 发行说明,可以同时使用 @Rule 和 @ClassRule 注释测试类的静态成员:
使用@Rule 和@ClassRule 注释的静态成员现在被认为是有效的。这意味着单个规则可用于在课程之前/之后(例如设置/拆除外部资源)和测试之间(例如重置外部资源)执行操作,
我想使用此功能在文件中所有测试的开头初始化资源,在每个测试之间对资源进行一些清理,并在所有测试完成后处理它。此资源当前由扩展ExternalResource的类表示。
在我的before
方法after
中,如何区分“所有测试之前/之后”和“每次测试之前/之后”?我是否需要使用不同的/自定义实现TestRule
来完成此操作?
java - 如何将 Hamcrest 匹配器应用于被测类的属性?
有没有办法构建一个组合的 Hamcrest 匹配器来测试一个对象和这个对象的属性?- 伪代码:
背景:我有一个 JUnit 测试,它遍历动态对象的集合。每个对象在处理时都应抛出异常。收集异常。测试应该以包含这些抛出异常的集合的 MultipleFailureException 结束:
junit - 无法在 JUnit 中将 Burst 与其他测试运行器一起使用
我发现了这个有趣的 JUnit 项目:https ://github.com/square/burst
它的文档仅指定如何将它与类运行器一起使用。然而,由于 JUnit 只允许每个 JUnit 有 1 个 Runner,使用 Burst 意味着用户将难以在集成测试中运行它,因为通常我们还需要运行其他类运行器,例如 SpringJUnit4ClassRunner.class 或其他类运行器。顺便说一句,我的问题并不特定于 SpringJUnit4ClassRunner,因为我可能还需要运行其他类运行器。
有没有办法与其他班级跑步者一起运行它?例如使用@Rule?
java - 此类文件的 JAR 属于容器“Junit 4”,该容器不允许修改其条目上的源附件
我是 Junit 框架的新手。我正在尝试使用反射 API 从 Junit 测试类调用另一个类中的私有方法。运行 JUnit 测试时出现以下错误:
当我调试应用程序时,我确实看到以下内容:
此类文件的 JAR 属于容器“Junit 4”,该容器不允许修改其条目上的源附件。
实际班级
Junit类
}
android - 在同一个测试中使用多个 TestRules
我已经编写了一个自定义TestRule
来与我的 Android 测试套件一起使用。它在被测应用程序使用的数据库中填充一个表。现在我需要将它DataRule
与ActivityTestRule
. 我的测试类的两个字段可以用 注释@Rule
吗?如何控制应用规则的顺序?
背景:
Android API 提供了一个用于启动 Activity 的 TestRule,它是每个带有 UI 的应用程序的核心类。我的应用程序有一个数据库,我有几个测试需要用一些已知数据预先填充数据库。以前,在基于 JUnit3 的测试中,我使用一个抽象超类来集中准备数据库的代码,然后我为不同的测试用例扩展了这个超类。现在我正在尝试使用 JUnit 4 实现相同的逻辑。我最近了解到测试规则是提供跨测试重用的逻辑的一种方式,因此我试图将逻辑从我的超类移动到测试规则。这是实现我的目标的适当方式吗?
java - 如何根据条件自动跳过某些 JUnit 测试?
我想要一种简单的方法来为我的 JUnit 测试分配优先级值,这样我就可以说“仅运行优先级 1 测试”、“运行优先级 1、2 和 3 测试”等。我知道我可以只包含一行就像Assume.assumeTrue("Test skipped for priority " + priority, priority <= 2);
在每个测试开始时一样(priority
我想要运行的最高优先级测试在哪里,并且2
是这个特定测试的优先级值),但是在每个测试开始时复制粘贴一行似乎不是一个很好的解决方案.
我尝试使用一个简单的注释编写解决方案,该注释由我正在使用的 JUnit 规则检测到:
虽然这似乎有效(正确的测试在 Eclipse JUnit 视图中显示为已跳过),但测试仍在执行,即其中的任何代码test1()
仍在运行。
有谁知道我如何才能Assume
在我的规则中实际跳过测试?
java - 如果抛出 JUnit ExpectedException,如何继续测试?
我已经使用 ExpectedException 功能设置了一些 JUnit (4.12) 测试,我希望在出现预期异常后继续测试。但我从来没有看到日志'3',因为执行似乎在异常之后停止,如果捕获事件?
这真的可能吗,怎么做?
java - 使用带有 NoSQL JUnit @Rule 的 Spring Data 随机(嵌入式)Mongo 端口
我目前正在尝试编写一个使用 Spring Data Mongo 存储库的集成测试类。我使用de.flapdoodle.embed.mongo
依赖项提供的嵌入式 Mongo 实例。Spring Data 文档指定我们只需将此依赖项放入项目EmbedMongoAutoConfiguration
中,其余部分由其负责。
现在,没关系,将端口设置为0
使自动配置过程找到一个空闲端口来启动 mongo 实例。
这个特性对我来说是必要的,以避免与其他测试发生冲突(这些测试与我公司的其他项目一起在 Jenkins CI 服务器上运行)。
现在问题来了,我希望能够在我的每个测试方法运行之前从一些外部文件中注入一些测试数据。我发现 NoSQL Unit 可以通过一个简单的方法注释和一个 JUnit 来做到这一点@Rule
。
这是一个例子:
我的问题是,@Rule
需要 Mongo 端口在其构建器中实例化底层的 MongoClient,但是在实例化 @Rule 时,Spring 上下文尚未完全初始化并且EmbeddedMongoAutoConfiguration
尚未发布端口。
所以我的问题是,有没有人曾经在 NoSQL 单元中使用过 Embedded Mongo 功能,有没有办法,例如在 Spring 上下文初始化@Rule
后创建?
我想知道是否自己找到空闲端口(以静态方式),将其设置为@Rule
然后告诉EmbeddedMongoAutoConfiguration
通过覆盖IMongodConfig
bean 来使用它是一个好主意吗?还是有“更简单”的方式?
注意:我刚刚看到 fladdoodle 库提供了一个类和一个静态方法来查找一个空闲的服务器端口,并且它被 Spring 使用,如下所示:
提前谢谢大家!
编辑:我尝试了我刚才谈到的解决方案,它似乎有效,但我仍然认为它有点“冗长”和肮脏。
然后在关联的配置类中: