问题标签 [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.
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() 的调用中抛出的……我不知道它怎么会失败。
有任何想法吗?
java - jUnit:NPE 关于私有成员初始化
jUnit
进行测试,初始化我的bean :
在ShowProducts.javaNullPointerException
中进入以下行:
如何在测试中正确初始化该字段?
编辑:
面孔配置:
.xhtml:
seam - Jmockit TestNG/JUnit NullPointerException with Seam
这些天我一直在使用 jmock 和 seam,但它不足以模拟最终/静态/枚举。所以我尝试使用 JMockit。但是每次我跑步时,我都会得到 NPE。甚至无法调试,下面是示例代码
实际代码..
如果我在类声明(公共类消费者..)处设置断点,则跳到下一行会导致 NPE。如果我取出代码中的注释行,它会在第一个未注释的行处失败。
我正在使用 Java 1.6 和 IntelliJ IDE。想知道它是否与IDE配置有关。
使用 TestNG,我什至没有得到堆栈跟踪,使用 JUnit,我看到下面的内容。
java - 使用 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
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
jmockit - 在 JMockit 中,如何指定一系列调用的时间?
我有类似的东西:
有没有办法可以使用“times =”规范?就像是:
我/可以/在我的期望中有一个循环,但我真的讨厌在我的单元测试中大于 1 的圈复杂度。
请注意,我想继续使用严格的期望。
java - Jmockit NullPointerException 与 Junit
我正在尝试运行由另一个程序员在 eclipse-indigo 中使用 JUnit 编写的测试,他确信它可以工作,但是当我尝试 Jmockit 时出现故障并且我找不到解决方案。
我尝试在类路径中更改 jmockit.jar 但不起作用。你对这个问题有任何想法吗?
编辑:当我在终端中使用“ant test”时没有问题,但是如果我在 IDE 中单击 run as > JUnit test,我会收到此错误。
jmockit - 有没有办法使用 JMockit 来模拟 spring 的 jdbcTemplate?
我正在为我的应用程序中的 DAO 使用 JMockit 编写单元测试用例,为此我必须模拟 spring 的 jdbcTemplate,这样就不会调用数据库。我看过其他有关模拟 DAO 的帖子/示例,但从未找到有关模拟 jdbcTemplate 的内容。有没有办法可以模拟它,如果有一个我从哪里开始?
java - 使用 JMockit 的具有相同模拟接口的 2 个对象返回相同的值
我做了一个简单的测试类来简化我的实际问题:
公共类 BidonTest {
}
下面,测试结果:
我的第一个问题是:为什么 ibidon2 返回“coco”?(即使我没有什么想法,但也许这里有人是 JMockit 专家:D)我的第二个问题是:我怎样才能改变它以使其返回“ismael et jordan”?
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 但没有工作。
请帮我解决这个问题。
提前致谢。-斯里纳斯