问题标签 [jmockit]

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 投票
1 回答
2147 浏览

java - 尝试使用 JMockit 部分模拟类时,ClassLoader 抛出 NullPointerException

使用 Eclipse 3.6.1
Java 1.6.0_26
JMockit 0.999.10

更新:我能够创建一个 SSCCE,我在下面发布:

UPDATE2:添加了 DaemonHelper。此外,如果我从构造函数中删除 DaemonHelper,我会得到一个 ClassCircularityError。有关的?

当我从类加载器获得 NPE 时,我正在尝试对一个类进行部分模拟,同时模拟该类的几个依赖项。NPE 调用堆栈如下所示

我有一个Daemon像这样的类:

守护进程有一个这样的父级:

有一个帮助类,如:

配置看起来像:

配置父级看起来像:

测试看起来像:

当我尝试运行此测试时,我收到以下错误。请注意,仅当 DaemonParent 和 Daemon Helper 将 java.lang.Thread 作为超类时才会弹出此错误:

我尝试注释掉NonStrictExpectations块和Verifications块,我得到了同样的错误。

NPE 是从对 currentThread() 的调用中抛出的……我不知道它怎么会失败。

有任何想法吗?

0 投票
2 回答
509 浏览

java - jUnit:NPE 关于私有成员初始化

jUnit进行测试,初始化我的bean :

在ShowProducts.javaNullPointerException中进入以下行:

如何在测试中正确初始化该字段?

编辑:

面孔配置:

.xhtml:

0 投票
1 回答
956 浏览

seam - Jmockit TestNG/JUnit NullPointerException with Seam

这些天我一直在使用 jmock 和 seam,但它不足以模拟最终/静态/枚举。所以我尝试使用 JMockit。但是每次我跑步时,我都会得到 NPE。甚至无法调试,下面是示例代码

实际代码..

如果我在类声明(公共类消费者..)处设置断点,则跳到下一行会导致 NPE。如果我取出代码中的注释行,它会在第一个未注释的行处失败。

我正在使用 Java 1.6 和 IntelliJ IDE。想知道它是否与IDE配置有关。

使用 TestNG,我什至没有得到堆栈跟踪,使用 JUnit,我看到下面的内容。

0 投票
2 回答
8042 浏览

java - 使用 JMockit 从模拟构造函数返回实际实例

我看过以下问题,它与我的不同:

jMockit:如何期望构造函数调用模拟对象?

这个问题很相似,但答案对我没有帮助:

如何使用 JMockit 模拟 Date 类的默认构造函数?

我想做的是模拟对 的构造函数调用java.util.zip.ZipFile,特别是有java.io.File参数的调用。我希望构造函数返回一个不同的实例ZipFile,我将使用只接受一个String参数的构造函数进行实例化。

这个构造函数调用发生在被测方法中,所以我不能注入ZipFile我想要的作为参数。

例如,代码如下所示:

我的第一个想法是使用静态部分模拟执行以下操作:

但这不会像教程中的这一行所示那样工作:constructors have void return type, so it makes no sense to record return values for them

我的第二个想法是尝试以下方法:

但这在尝试初始化文件时会引发以下情况:

我的第三个想法是使用@MockClass如下:

但是这个软管我有一些其他的模拟,它们为我的测试类的不同部分加载配置文件。更不用说我会为不同的测试用例需要不同的 zip 文件。

我想我可以嘲笑一切会做的ZipFile事情,但这很快就会变成一个巨大的痛苦,因为它被称为很多地方,它的输出需要被嘲笑等等。重构试图使其易于访问会很尴尬,因为使用 的代码ZipFile是代码内部的,公共方法并不真正关心它。

我有一种感觉 JMockit 有一种方法允许这样做(在调用构造函数时给出对象的特定实例),但我无法弄清楚。有没有人有任何想法?

编辑:我尝试了@Rogerio 建议的方法,但出现了一个新错误。这是我的设置:

但我得到以下堆栈跟踪:

其中第 61 行是该new NonStrictExpectations() {行。

我真的想说“与其模拟这个对象,不如替换这个相同类型的另一个对象”。也许我表达得不好。

EDIT2:我想我应该包括版本号:Using Eclipse 3.6.1 Java 1.6.0_26 JMockit 0.999.10

0 投票
3 回答
945 浏览

java - JMockit 和多种本地方法

假设我有带有方法的 MyClass 类x()y()并且z(). 比方说x()cally()y()call z()

所以每次我x()都测试y()并被z()调用。在模拟 MyClass 的依赖关系的情况下,我将不得不模拟内部的依赖关系行为x()y()z().

因此,如果我对方法的测试x()testXWhen1(),我将不得不在每个测试方法中重复对我的依赖项的期望。最后,我有一些代码,其中包含对内部发生的事情的期望,并重复了我的三种测试方法。有什么办法可以避免这种情况吗?testXWhen2()testXWhen3()y()z()

我的一个想法是尝试测试实际的x()方法,但是嘲笑y()z(). 在那种情况下,我的实例MyClass应该部分是模拟的,部分是真实的MyClass。可能吗?

另一个解决方案是对 中的期望严格,但对在and中x()发生的事情不严格……我想我可以用代替来做到这一点,但这不是我最喜欢的解决方案。y()z()@NonStrict@Mocked

0 投票
1 回答
1070 浏览

jmockit - 在 JMockit 中,如何指定一系列调用的时间?

我有类似的东西:

有没有办法可以使用“times =”规范?就像是:

我/可以/在我的期望中有一个循环,但我真的讨厌在我的单元测试中大于 1 的圈复杂度。

请注意,我想继续使用严格的期望。

0 投票
2 回答
4873 浏览

java - Jmockit NullPointerException 与 Junit

我正在尝试运行由另一个程序员在 eclipse-indigo 中使用 JUnit 编写的测试,他确信它可以工作,但是当我尝试 Jmockit 时出现故障并且我找不到解决方案。

我尝试在类路径中更改 jmockit.jar 但不起作用。你对这个问题有任何想法吗?

编辑:当我在终端中使用“ant test”时没有问题,但是如果我在 IDE 中单击 run as > JUnit test,我会收到此错误。

0 投票
1 回答
582 浏览

jmockit - 有没有办法使用 JMockit 来模拟 spring 的 jdbcTemplate?

我正在为我的应用程序中的 DAO 使用 JMockit 编写单元测试用例,为此我必须模拟 spring 的 jdbcTemplate,这样就不会调用数据库。我看过其他有关模拟 DAO 的帖子/示例,但从未找到有关模拟 jdbcTemplate 的内容。有没有办法可以模拟它,如果有一个我从哪里开始?

0 投票
1 回答
190 浏览

java - 使用 JMockit 的具有相同模拟接口的 2 个对象返回相同的值

我做了一个简单的测试类来简化我的实际问题:

公共类 BidonTest {

}

下面,测试结果:

我的第一个问题是:为什么 ibidon2 返回“coco”?(即使我没有什么想法,但也许这里有人是 JMockit 专家:D)我的第二个问题是:我怎样才能改变它以使其返回“ismael et jordan”?

0 投票
0 回答
522 浏览

jmockit - 将 JMockit 0.999.11 与 Maven 2.2 一起使用但能够与 junit 和 testng 选项一起使用时出错

当我尝试运行 jmockit 的 maven 测试或 maven surefire 测试时,出现以下错误。但是当我运行 junit 或 testng 时,它工作正常。

java.lang.RuntimeException: java.io.IOException: Unable to enqueue operation, pre-6.0 jvm.dll? 在 mockit.internal.startup.JDK6AgentLoader.loadAgentAndDetachFromThisVM(JDK6AgentLoader.java: 111) 在 org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:111) 引起:java.io.IOException:无法入队操作,6.0之前的jvm.dll?在 sun.tools.attach.WindowsVirtualMachine.enqueue(Native Method) 在 sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java: 77) 在 sun.tools.attach.HotSpotVirtualMachine.loadAgentLibrary(HotSpotVirtualMachine.java: 53)

以上是我在使用 maven 2.2 执行时遇到的错误。

我正在使用的环境: Maven:2.2.1 JMockit:0.999.11 在 pom 中添加如下:

Java:IBM Java 1.6 SR4

但是当我将 javaagent 路径添加到 junit 或 testng 运行时 vm args 时,它运行良好。但是我尝试添加到 maven test vm args 但没有工作。

请帮我解决这个问题。

提前致谢。-斯里纳斯