问题标签 [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.

0 投票
6 回答
10153 浏览

java - 如何模拟对象构造?

有没有办法在 Java 中使用 JMock 来模拟对象构造?

例如,如果我有这样的方法:

...有没有办法在测试方法中模拟对象构造的期望?

我希望能够期望调用某些构造函数,而不是使用额外的代码来检查类型(因为它并不总是像我的示例那样复杂和简单)。

所以而不是:

我可以期望调用某个构造函数。只是为了让它更简洁一些,并以更易读的方式表达实际正在测试的内容。

请原谅这个简单的例子,我正在处理的实际问题有点复杂,但是有期望会简化它。


更多背景知识:

我有一个简单的工厂方法,它创建包装对象。被包装的对象可能需要在测试类中难以获得的参数(它是预先存在的代码),因此很难构造它们。

也许更接近我实际寻找的是:有没有一种方法可以一举模拟整个类(使用 CGLib),而无需指定要存根的每种方法?

所以 mock 被包装在一个构造函数中,所以显然可以在上面调用方法,JMock 是否能够动态地模拟出每个方法?

我的猜测是否定的,因为那会非常复杂。但是知道我在叫错树也很有价值:-)

0 投票
6 回答
1787 浏览

java - Junit 输出和 OutOfMemoryError

我正在我的应用程序上运行一些 JUnit 测试。每个测试都有一个 for 循环调用相应的方法 10000 次。测试的方法会产生大量的日志。JUnit 也会自动收集这些日志作为测试输出。这种情况会导致 OutOfMemoryError,因为 JUnit 保存输出的字符串缓冲区变得太大。我在测试期间不需要这些日志,所以如果有办法告诉 JUnit“不要保留程序输出”就足够了。有任何想法吗?

0 投票
10 回答
32891 浏览

java - 是否有自动测试 getter 和 setter 的 Java 单元测试框架?

Java(以及其他社区,我敢肯定)有一个众所周知的争论是否应该测试琐碎的 getter/setter 方法。通常,这是关于代码覆盖率的。让我们同意这是一场公开辩论,而不是试图在这里回答。

有几篇关于使用 Java 反射来自动测试这些方法的博客文章。

是否有任何框架(例如 jUnit)提供这样的功能?例如,一个注释说“这个测试 T 应该自动测试 C 类上的所有 getter/setter,因为我断言它们是标准的”。

在我看来,它会增加价值,如果它是可配置的,那么“辩论”将作为一个选项留给用户。

0 投票
5 回答
24189 浏览

java - 如何在 Eclipse 中默认 JUnit 启动配置的工作目录?

我们的 Java 代码(不是测试代码)从当前目录读取文件,这意味着我们在运行代码时需要正确设置工作目录。

从 Eclipse 中启动 JUnit 测试时,会自动创建启动配置。问题是,该启动配置中的工作目录默认始终是根项目目录,这总是错误的,测试失败,我必须打开启动配置对话框,更改工作目录并重新启动测试。这很烦人。当我运行一个测试方法时也会发生同样的事情。

我已经考虑过这些:

  • 从测试代码更改当前目录 - 设计不可能。
  • 打开文件时,传递父目录参数 - 太难了,因为这会影响很多地方。
  • 使用 Eclipse 的复制启动配置功能从已经设置了正确工作目录的现有启动配置中创建新的启动配置。这在这里没有任何意义,因为我想快速启动测试或测试方法,只需调用“将此测试/方法作为 JUnit 测试运行”即可。

总而言之,它看起来像是 Eclipse 的责任,而不是代码。

有没有办法为所有未来新创建的JUnit 启动配置设置默认工作目录?

0 投票
23 回答
50431 浏览

java - 无根测试

在 Eclipse(Eclipse 3.4 'Ganymede')中运行我的所有测试时,“Unrooted Tests”下列出了一项测试。我正在使用 Junit 3.8,这个特定的测试扩展了 TestCase。我看不出这个测试和其他测试有什么区别。我不记得在 Eclipse 3.3 (Europa) 中看到过这种情况。

澄清:

我们还没有迁移到 JUnit 4.0,所以我们没有使用注解。我也用谷歌搜索,似乎大多数人都遇到了 JUnit 4 的问题,但我没有看到任何解决方案。在这一点上,测试在本地和 CruiseControl 中都通过了,所以我并不过分担心,但很好奇。

但是,当我第一次看到这个时,它是在一个失败的测试中,只有在与其他测试一起运行时才会失败。这使我陷入了寻找解决方案来解决我从未找到的“无根”问题的方法。最终,我在另一个没有正确拆除的测试中找到了罪魁祸首。

我同意,这似乎是一个 Eclipse 问题。

0 投票
10 回答
82918 浏览

java - 测试 JAX-RS Web 服务?

我目前正在寻找为基于JAX-RS(RESTful Web 服务的 Java API)的 Web 服务创建自动化测试的方法。

我基本上需要一种方法来向它发送某些输入并验证我是否得到了预期的响应。我更喜欢通过 JUnit 来实现,但我不确定如何实现。

您使用什么方法来测试您的 Web 服务?

更新:正如 entzik 指出的,将 Web 服务与业务逻辑分离允许我对业务逻辑进行单元测试。但是,我还想测试正确的 HTTP 状态代码等。

0 投票
7 回答
4332 浏览

java - Ant Junit tests are running much slower via ant than via IDE - what to look at?

I am running my junit tests via ant and they are running substantially slower than via the IDE. My ant call is:

The same test that runs in near instantaneously in my IDE (0.067s) takes 4.632s when run through Ant. In the past, I've been able to speed up test problems like this by using the junit fork parameter but this doesn't seem to be helping in this case. What properties or parameters can I look at to speed up these tests?

More info:

I am using the reported time from the IDE vs. the time that the junit task outputs. This is not the sum total time reported at the end of the ant run.

So, bizarrely, this problem has resolved itself. What could have caused this problem? The system runs on a local disk so that is not the problem.

0 投票
8 回答
4149 浏览

java - 在 Linux 上使用 ANT、Javacc、JUnit 和编译 Java 类加快构建时间的技巧

我们有一个庞大的代码库,在开发人员机器上大约需要 12 分钟才能使用 JavaCC 自动生成一些 Java 5 类,然后编译所有类并运行单元测试。

该项目由多个可以分组构建的项目组成,但我们的目标是在 10 分钟内完成一个完整的构建

有什么技巧可以减少此构建时间?

谢谢

0 投票
2 回答
39472 浏览

java - Hamcrest 的多个正确结果(是否有或匹配器?)

我对匹配器比较陌生。我正在与 JUnit 结合使用hamcrest,我有点喜欢它。

有没有办法声明多个选择中的一个是正确的?

就像是

我正在测试的方法返回集合的一个元素。该列表可能包含多个候选者。我当前的实现返回第一个命中,但这不是必需的。如果返回任何可能的候选人,我希望我的测试用例成功。你会如何用 Java 来表达这一点?

(我对 hamcrest-alternatives 持开放态度)

0 投票
9 回答
8385 浏览

java - 是否有用于运行测试组的 JUnit TestRunner?

我目前正在使用 JUnit 4,并且需要将我的测试分成可以以任何组合有选择地运行的组。我知道 TestNG 具有注释测试以将它们分配给组的功能,但我现在无法迁移到 TestNG。似乎这可以通过一些自定义注释和自定义 JUnit TestRunner 在 JUnit 中轻松完成。我已经检查了 JUnit 文档并搜索了网络,但找不到这样的东西。有人知道这样的TestRunner吗?

更新:感谢您对测试套件的回复。我应该在我原来的问题中解决这些问题。让我们开始吧:我不想使用测试套件,因为它们需要我手动创建和管理它们,这意味着我要手动处理我的所有测试并将它们安排到套件中(太多的工作和维护的噩梦)。我需要做的就是运行所有的单元测试,除了一些真正的集成测试。所以我想注释这些,并运行所有其他的。在其他时候,我只想运行集成测试。我还需要将单元测试放入多个组中,这在套件中是不可能的。希望这有助于解决问题。

更新 2:如果 JUnit 没有此 OOB,我正在寻找一个将其添加到 JUnit 的开源库(注释 + 自定义 JUnit 测试运行器)。