问题标签 [junit-runner]
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.
junit - 运行 jUnit 跑步者列表
我有一些本质上看起来像的测试套件
(这不是实际测试,而是本质,每个@Test
方法只调用一个方法)
所以我的想法是我可以使用一个接受jUnit Runner的@RunWith
自定义BlockJUnit4ClassRunner。List
这将如何实现?或者有更好的方法吗?
java - Groovy 类中@Rule(JUnit) 声明和赋值的逻辑是什么
尝试在 groovy 文件中创建规则的一些变体,我想到@Rule 不描述声明,而是描述分配。因此,跑步者在加载测试时,会尝试每条规则以正确分配。
但是,后来我遇到了一些自相矛盾的变体:
它的逻辑是什么?
这似乎是 Runner 中的一个错误 - runner 在构建测试之前进行了过多的检查。
java - 为接口的多个实现编写单个单元测试
我有一个接口List
,其实现包括单链表、Doubly、Circular 等。我为 Singly 编写的单元测试应该适用于大多数 Doubly 以及 Circular 和该接口的任何其他新实现。因此,不是为每个实现重复单元测试,JUnit 是否提供了一些内置的东西,让我有一个 JUnit 测试并针对不同的实现运行它?
使用 JUnit 参数化测试,我可以提供不同的实现,如单、双、循环等,但对于每个实现,相同的对象用于执行类中的所有测试。
android - 在robotium 4.1中进行robotium测试后是否有必要使用tearDown方法?
无论是否调用它,我的测试都会关闭应用程序以及与之相关的任何活动。它有什么意义?从我的所有测试课程中删除它是否安全?
java - 自定义 ClassLoader 在 JUnit 测试中代理静态库类
问题
是否可以使用 custom 提供一个类的实现ClassLoader
,以便从静态上下文中正确使用?
背景
我正在使用一个框架,该框架建议我们使用静态类来连接依赖项。
它的工作原理是这样的..
正如您所料,这是一个测试的噩梦,而且,果然FrameworkProvidedDependencyResolver
(不是真名)抛出一个NullPointerException
除非从活动框架环境中调用,而这在 JUnit 中是不可能的。
我想做的是提供一个自定义ClassLoader
,我可以在 JUnit 测试中使用它来提供一个FrameworkProvidedDependencyResolver
连接模拟依赖项或其他任何东西的自定义。
好的,这就是我希望我的单元测试看起来像的样子:
MyTestRunner
是我选择使用我的自定义ClassLoader
..
好的,这样MyClassLoader
我就有机会换掉FrameworkProvidedDependencyResolver
自定义依赖解析器进行测试了。
好的,所以现在我们可以加载自定义FrameworkProvidedDependencyResolver
而不是框架提供的自定义了.. 但是我该怎么做呢?
我可以忽略对“FrameworkProvidedDependencyResolver”的请求并返回另一个类,例如“MyMockFrameworkProvidedDependencyResolver”。这很好,但是当从静态上下文MyClass.initialize
调用时FrameworkProvidedDependencyResolver
,我们得到一个NoClassDefFoundError
. 说得通。
我可以尝试将其命名MyMockFrameworkProvidedDependencyResolver
为与真实相同的名称FrameworkProvidedDependencyResolver
并将其放入另一个包中(例如:)i.hate.my.framework.FrameworkProvidedDependencyResolver
。这也不起作用,因为MyClass
它专门查看 real FrameworkProvidedDependencyResolver
、 package 和所有内容。
我可以尝试将我的类命名为真实类FrameworkProvidedDependencyResolver
,并将其放在与我的框架提供的相同的包中。但现在我什至不需要ClassLoader
. JVM 会被这两者混淆并加载类路径中合适的那个,可能是我的。这里的问题是这现在适用于所有测试。不是我正在寻找的解决方案。
最后,我不能使用Proxy
,因为FrameworkProvidedDependencyResolver
不是interface
.
好的,重申我的问题:
是否可以使用 custom 提供一个类的实现ClassLoader
,它将在静态上下文中正确使用?也许,我是否可以在它自己的唯一路径中拥有一个具有唯一名称的类,我可以在加载它时对其进行编辑,以便它以我试图覆盖的预期路径和名称出现在 JVM 中?当然,任何其他解决方案都是受欢迎的。
scala - 使用 IntelliJ 和 Maven 的 ScalaTest 和 JUnit 测试的执行顺序
我的团队正在使用 Scala、IntelliJ 和 Maven。
在我正在处理的当前模块的一些测试中,内部测试的执行顺序很重要。
出于某种原因,在 IntelliJ 中使用 JUnit 或 ScalaTest 运行相同的测试会影响执行顺序。
例如,下面的测试:
使用 JUnit 运行时,上面的代码打印输出:
使用 ScalaTest 运行时,上面的代码打印输出:
有人知道如何编写这样的测试来确保 ScalaTests 和 JUint 中的执行顺序吗?另外,你如何在 IntelliJ 中切换它们?
java - 为多个 JUnit 测试类添加设置步骤
在一个项目中有多个测试类,每个测试类都包含多个测试方法。比如说,我想在运行每个测试类之前创建一个数据库连接。无论我是运行单个测试类、多个测试类还是测试套件,都应该建立连接。最重要的是,在有多个测试类的情况下,不应一遍又一遍地调用此步骤。无论我运行的测试类数量如何,都应该只建立一次连接。
你能提出一个设计或任何 JUnit 技巧来解决这个问题吗?
java - 为什么 JUnit "Run as->JUnit" 和 "Cover as -> Junit" 有不同的行为?
我有一个 JUnit 测试。但是当我使用“Run as -> JUnit”时它会成功,而当我使用“Cover as -> JUnit”时它会失败。这是为什么?代码确实有问题。在代码中,我使用了一些遗留代码(我无权更改它),其中包含一个太大的方法(超过 64KB)。为什么“Run as -> JUnit”不能暴露这个问题?
junit - 如何从测试运行器获取 JUnit 测试结果?
我已经使用重写的 runChild() 方法实现了我自己的测试运行器:
我重写了这个方法,因为我需要在测试用例执行之前/之后做一些全局的前后操作。后操作将取决于测试用例执行的失败/成功。如何检索执行结果?
java - 在执行测试之前验证外部系统是否可用的最佳位置是什么?
我们正在使用 JUnit 执行集成测试以及依赖外部测试系统(不一定由我们自己的公司维护)的系统集成测试。
我想知道在运行测试用例之前将检查系统是否可用的代码放在哪里?所以我可以确定是否存在网络或其他问题,而不是测试本身。
JUnit 允许在 JUnit-Rules 中设置测试的某些部分。在规则内设置与外部系统通信的服务并对规则内的外部系统进行一些基本检查(“ping”)是一个好主意吗?或者要存储状态并在测试中使用 JUnit 假设(rule.isAvailable)来避免执行测试?
或者将这个验证码放在自定义的 JUnit Runner 中会更聪明吗?
或者还有其他方法可以做到这一点吗?(只需创建一些实用程序?)
如果某些条件不满足,目标是跳过测试,因为很明显测试会失败。我知道这表明异常处理不好,但是有很多遗留代码我无法完全更改。
我试图自己找一些文章,但似乎搜索词(“测试”、“外部系统”等)有点吃力不讨好。
谢谢!