问题标签 [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 投票
4 回答
6410 浏览

java - 如何在 JMockit 中使用通用对象模拟方法?

如果您知道如何使用 JMockit,这个问题是不言自明的:如何模拟具有泛型的方法?我想模拟这个方法: public T save(T entity) 但它总是抛出这样的异常:

0 投票
1 回答
1217 浏览

unit-testing - 使用 JMockit 期望模拟工具包

我正在尝试使用 JMockit 期望来模拟 java.awt.Toolkit.beep()。我的测试用例中有以下代码:

当我运行测试用例(JUnit 4)时,我在“new Expectations”行得到以下异常:

有任何想法吗?

0 投票
1 回答
2028 浏览

debugging - 调试器不适用于 JMockit

希望这里有一个简单的问题......

我正在使用 RAD 7.5.2,并且正在编写 Junit 测试。我用 JUnit 3 写得很好,然后我想模拟一些函数调用。所以我加载了 jmockit 0.9.7 和 Junit 4.6。我还包括 -javaagent:jmockit.jar 作为 VM 参数。

当我“运行为 Junit 测试”时,它完全没有问题(至少,我在输出中看不到任何问题)。Junit 的输出很好,没有错误转储到控制台。

当我“调试为 Junit 测试”时,它不起作用。它让我陷入:

InstrumentationImpl.class --> 找不到源

......当我点击继续......

NativeMethodAccessorImpl.class --> 找不到源

...当我点击继续...

JUnit 在此之后结束。它将以下内容转储到控制台:


在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl) 的线程“main”java.lang.reflect.InvocationTargetException 中的异常.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:160) 原因:java.lang.UnsatisfiedLinkError: sun/instrument/ InstrumentationImpl.redefineClasses0([Ljava/lang/instrument/ClassDefinition;)V at sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:98) at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:197) at mockit.internal。重新定义引擎。在 mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:116) 在 mockit.internal.RedefinitionEngine.setUpInternalStartupMock(RedefinitionEngine.java:53) 在 mockit.internal.Startup.loadInternalStartupMocks(Startup.java) 的 redefineMethods(RedefinitionEngine.java:184) :123) 在 mockit.internal.Startup.initialize(Startup.java:110) 在 mockit.internal.Startup.premain(Startup.java:97) ... 还有 5 个

致命错误:处理 -javaagent 失败


我可以毫无问题地在我的测试上运行 JUnit 3 和 JUnit 4,当我使用 -javaagent:jmockit.jar (使用调试器;它们本身很好)时,事情变得丑陋,我必须这样做使用 jmockit 的东西。

想法?

0 投票
2 回答
2614 浏览

jmockit - Jmockit抽象类实例

我想模拟抽象类中的一个方法说'A'并且还需要将类型A的实例传递给我正在单元测试的方法。

有没有办法使用 Jmockit 创建实例,例如 Mockit.newemptyProxy 我该如何解决这种情况

0 投票
4 回答
3121 浏览

jmockit - ClassFormatError 使用 JMockit 和 EMMA

我正在尝试使用 EMMA 来测量一些使用 JMockit 的 JUnit 测试的覆盖率。但是,当我在使用 EMMA 进行检测后尝试运行 JMockit 测试时,大约四分之一的测试失败并出现以下错误:

我看不到任何关于哪些测试失败和哪些没有失败的模式。我想这只是 JMockit 中的一个错误,但有人知道解决方法吗?

我发现了一个非常相似的问题,叫做“Getting ClassFormatError with EMMA?” 但该解决方案对我不起作用(我没有使用任何 reentrant=true 模拟方法)。还有其他想法吗?

提前致谢。

0 投票
4 回答
2994 浏览

java - 是否有一种更简洁的方法来测试对列表中每个项目的模拟方法的调用

这是我最近经常遇到的一个模式示例。我有一个要测试的方法,它需要一个列表,并且可以为列表中的每个项目调用一些其他方法。为了测试这一点,我定义了一个带有预期调用参数的迭代器,并在 JMock 预期中定义了一个循环,以检查是否针对迭代器的每个项目进行了调用(参见下面的简单示例)。

我已经查看了 Hamcrest 匹配器,但没有找到可以对此进行测试的东西(或者误解了可用匹配器的工作方式)。有没有人有更优雅的方法?

0 投票
1 回答
1155 浏览

java - JMockit 休眠仿真

我想知道是否有人尝试过使用 JMockit Hibernate Emulation?

Jmockit 文档说当 Hibernate Emulation 测试运行时,它们不会使用 O/R 映射信息。所以,这意味着它不测试 O/R 映射、HQL 查询字符串、本机查询等。那么 Hibernate Emulation 的真正好处是什么?可以只创建 MyDAO 模拟并将其用于测试。为什么要为 hibenrate 仿真而烦恼,只是模拟出所有的 DAO。你怎么看 ?

谢谢。

0 投票
5 回答
6775 浏览

java - 如何 JMockIt System.getenv(String)?

我现在拥有的

我有一个 3rd 方单例实例,我的测试类依赖于该实例,并且该单例正在System.getenv(String)其构造函数中使用。可以模拟这个电话吗?

我试过这个

JMockIt 示例

但它给了我一个EXCEPTION_ACCESS_VIOLATION并使JVM崩溃。

是否有另一种方法可以为单元测试设置系统环境变量?

0 投票
2 回答
3311 浏览

java - 如何使用 jMockit 模拟本机方法

我正在尝试使用 jMockit 来存根对 netscape.javascript.JSObject 的调用,不幸的是,这是一个包含一些本机方法的抽象类,这两种方法都不能很好地与 jMockit 配合使用。我有什么办法可以用 jMockit 或纯 java 来解决这个问题(如果可能的话,我宁愿不必引入新的库)?我试图注入模拟的代码如下所示(不要问):

JSObject win = JSObject.getWindow(this);
String someVal = (String) win.call("foo", new String[] {""});

不幸的是,我无法修改有问题的代码(再一次,不要问),所以我可以对其进行任何类型的单元测试的唯一方法是,如果我能弄清楚如何存根或以其他方式消除对JS对象。我当前的模拟实现为调用getWindow返回一个自身的新实例,并为调用返回一个常量字符串,但当然它在运行时失败并抱怨

类重新定义失败:试图更改方法修饰符

从我的研究中我发现这意味着它正在尝试模拟本机方法。

编辑:由于目标平台,我需要使用 JDK 1.5 来构建/测试,因此任何解决方案都必须在 1.5 上可行。

0 投票
4 回答
260 浏览

maven-2 - 是否可以在某些 Maven 配置文件中将模块依赖项插入到类路径的开头?

我正在尝试将 jmockit-coverage-0.994.jar 依赖项从项目中移出到默认情况下未激活的某个配置文件,但无法将其插入配置文件依赖项的结果类路径的开头。