问题标签 [junit4]

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 投票
12 回答
32659 浏览

unit-testing - 如何使用 maven-surefire-plugin 在同一个项目中执行 JUnit 和 TestNG 测试?

现在我有两种类型的测试但是当我说“mvn test”时它只执行TestNG测试而不是Junit。我想一个接一个地执行。任何的想法 ?

0 投票
3 回答
3262 浏览

java - Junit4 和 TestNG 在一个项目中使用 Maven

要一起运行它们,可用的选项很少,但我选择为 Junit 和 TestNG 使用不同的配置文件。但是现在的问题是排除和包含测试用例。

因为如果我们将 testNG 依赖添加到 maven 中的主项目,它将跳过所有 Junit,我决定将它放在单独的配置文件中。因此,我使用 pom.xml 中的以下条目将默认(主)配置文件中的 TestNG 测试排除在编译之外:

和surefire插件一样。所以它适用于主配置文件并且只执行 Junit4 测试。但是当我使用 testNG 配置文件时,即使它不会编译它们,它也不会执行 testNG 测试。我正在使用以下配置文件来执行它们。

有人知道为什么不包括它们并再次编译吗?

0 投票
7 回答
10499 浏览

java - 在不修改 Test 类的情况下排除单个 JUnit Test 方法?

我目前正在针对我的代码重新使用来自另一个项目的 JUnit 4 测试。作为我的自动化 Ant 构建的一部分,我直接从另一个项目的存储库中获取它们。这很棒,因为它确保我的代码在最新版本的测试中保持绿色。

但是,有一部分测试是我从没想过会传递给我的代码的。但是,如果我开始向这些测试添加@Ignore 注释,我将不得不维护我自己的测试实现的单独副本,我真的不想这样做。

有没有办法在不修改测试源的情况下排除单个测试?这是我到目前为止所看到的:

  • 据我所知,Ant JUnit 任务只允许您排除整个测试类,而不是单个测试方法——所以这对我没有好处,我需要方法粒度。

  • 我考虑将使用反射动态查找和添加所有原始测试的 TestSuite 放在一起,然后添加代码以显式删除我不想运行的测试。但是当我注意到TestSuite API没有提供删除测试的方法时,我放弃了这个想法。

  • 我可以创建自己的测试类来扩展原始测试类,覆盖我不想运行的特定测试,并用@Ignore 注释它们。然后我在我的子类上运行 JUnit。这里的缺点是,如果将新的 Test 类添加到原始项目中,我不会自动选择它们。当新的 Test 类被添加到原始项目时,我将不得不监视它们。到目前为止,这是我最好的选择,但感觉并不理想。

  • 我能想到的唯一其他选择是无论如何都运行糟糕的测试并忽略失败。但是,这些测试需要一段时间才能运行(并且失败!)所以我宁愿根本不运行它们。此外,我看不到告诉 Ant 任务忽略特定测试方法上的失败的方法(再次 - 我看到了如何为单个 Test 类而不是方法做到这一点)。

0 投票
2 回答
990 浏览

junit4 - netbeans 和 openejb 的 ejb 测试问题

我创建了一个带有 ejb 和 war 模块的 netbeans 6.7 EnterpriseApplication 项目,并带有一个带有简单 sayHello() 方法的测试无状态会话 ejb。

我还添加了 openEjb 库以便对 ejb 进行单元测试。一切运行良好,除了我不断收到以下错误:

事实证明,我以某种方式从某个地方获取了 glassfish 库 webservices-tools.jar,但我不知道如何摆脱它,这样每当我尝试运行任何 junit 测试时,我就不会得到一堆异常。

有没有人遇到过这个问题?你能帮我解决吗?

谢谢。

0 投票
4 回答
6253 浏览

java - 找不到 assertArrayEquals(Object[] o1, Object[] o2)

我的设置:

当我尝试传入两个类数组(转换为 Object[])时,我收到错误“找不到符号”,并且我的测试用例无法编译。

我对其他断言语句没有意见,正如我所说,我正在使用 JUnit 4.5 库。

有没有人知道如何解决这个问题,或者观察到这种古怪的行为?

Netbeans 能够通过其自动完成功能找到此函数声明,但无法找到它所在的位置,也无法导航到源。

示例代码:

0 投票
1 回答
12617 浏览

java - SpringJUnit4ClassRunner 为每个测试初始化​​bean?

下面的测试说明了这个测试 bean 被 Spring 初始化了两次。我希望有人能告诉我为什么会这样,因为它应该只有一次。这是测试:

这是bean文件:

这是输出:

0 投票
4 回答
3553 浏览

java - 为什么junit4没有双[]s的Assert.assertArrayEquals()?

Junit4 中似乎有Assert.assertArrayEquals()除 double 以外的所有原语的方法,例如

但不是

或者

(后者说明双打的可变范围)。我不应该写这样一个函数有根本原因吗?

0 投票
2 回答
12033 浏览

java - Junit 3 中的课程拆解?

我们有很多使用 JUnit 3编写的集成测试,尽管我们现在使用4.4运行它们。其中一些需要在类中的所有测试完成后运行的 tearDown 方法(以释放一些公共资源)。

我看到这可以在junit 4中使用@AfterClass(org.junit)完成。但是,将其混合到现有的扩展 TestCase (junit.framework.*) 的 junit 3 测试中似乎不起作用。[顺便说一句,有迁移工具吗?问题264680表明一年前没有。]

我已经看到提到使用 junit.extensions.TestSetup 来处理这种事情。我对此的简短测试似乎不起作用。有什么例子吗?

0 投票
4 回答
10690 浏览

java - 是否可以以编程方式生成 JUnit 测试用例和套件?

我必须为目前以几种表格形式捕获的一组复杂的业务规则编写一个非常大的测试套件(例如,如果参数 XYZ 是这样那样,则值应该在 V1 和 V2 之间)。每个规则都有一个名称和它自己的语义。

我的最终目标是拥有一个测试套件,组织成子测试套件,每个规则都有一个测试用例。

一种选择是将所有这些规则实际硬编码为测试。这是丑陋的、耗时的和不灵活的。

另一种方法是编写一个 Python 脚本来读取规则文件并使用单元测试生成 Java 类。如果可以的话,我宁愿避免这种情况。另一种变体是使用 Jython。

但是,理想情况下,我希望有一个可以读取文件的测试套件,然后在其中定义子套件和测试。这些测试中的每一个都可能使用从表文件中获取的某些值进行初始化,在我们的系统中运行固定的入口点,然后根据预期值对结果调用一些验证器函数。

有没有一种合理的方法可以仅使用 Java 来实现这一点?

更新:我可能在某种程度上简化了我们的规则。其中一些确实是表格(excel 风格),另一些则比较模糊。不过,一般问题仍然存在,因为我可能不是第一个遇到这个问题的人。

0 投票
3 回答
2821 浏览

eclipse - 当我的测试在 Eclipse 中扩展 TestCase(Junit) 时,无法使用 @Test 注释执行测试

当我的测试在 Eclipse 中扩展 TestCase(Junit) 时,无法使用 @Test 注释执行测试

当我不从 TestCase(jUnit) 扩展时,它工作正常,但我现有的代码从 TestCase 扩展,因此我想保持原样。