问题标签 [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 回答
11968 浏览

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

我想模拟它的默认构造函数,java.util.date所以它不会构造一个Date代表它创建时间的对象,但总是相同的Date对象(在我的示例中,2010 年 12 月 31 日以下)。我尝试使用JMockitand执行此JUnit操作,但是在下面执行我的测试时,输出始终为Thu Jan 01 01:00:00 CET 1970. 那么我的模拟有什么问题Date()呢?

0 投票
1 回答
1446 浏览

java - 当要模拟的方法具有多个参数时,如何使用 Jmock 编写自定义约束

我在为一些大型代码库编写单元测试用例时遇到了困难,我必须模拟很多类,以便我可以轻松地进行测试。我在 Jmock 的 API 文档中发现我可以使用的 customeconstraint 包含一个方法

如果参数符合预期,这将返回 true。

但是我的方法是用多个参数调用的。如何评估参数并确保调用该方法的参数是正确的。提前致谢。

0 投票
2 回答
3168 浏览

junit - 如何使用 TestNG 和一些模拟框架模拟 HTTPSession/FlexSession

我正在开发一个在 Tomcat 6 上运行的 Web 应用程序,使用 Flex 作为前端。我正在使用 TestNG 测试我的后端。目前,我正在尝试在我的 Java-Backend 中测试以下方法:

该方法需要访问仅当我在 Servlet 容器上运行它时才存在的 FlexContext(如果您不了解 Flex,请不要打扰,这通常是一个 Java-Mocking 问题)。否则我在调用时会收到 Nullpointer 异常session.setAttribute()。不幸的是,我无法从外部设置 FlexContext,这将使我能够从我的测试中设置它。它只是在方法内部获得的。

在不更改方法或包含该方法的类的情况下,使用 Mocking 框架测试此方法的最佳方法是什么?对于这个用例,哪个框架最简单(我的应用程序中几乎没有其他东西需要模拟,这很简单)?

抱歉,我可以自己尝试所有这些,看看我怎样才能让它工作,但我希望我能得到一些好的建议的快速入门!

0 投票
2 回答
3249 浏览

java - JMockit:当模拟对象应该被实例化时出现空指针错误?

我对JMockit的理解是,它将用模拟替换模拟对象的所有实例(除非你另有说明)。

因此,在实例化一个我试图模拟的对象后,我很困惑得到一个NPE 。

测试的目的不是调查导致 NPE 的对象,但我确实需要模拟它以执行测试,因为它执行一些数据库操作来验证某些输入。

我的测试代码是这样的(不是复制意大利面,因为它是工作代码,但应该突出显示问题):

我的测试方法:

谁能帮我解决这个 NPE 问题,以便我完成测试?

0 投票
1 回答
2939 浏览

eclipse - 在 JMockit 中调试部分模拟

使用 JMockit 0.999.4 和 JDK6,是否可以调试到部分模拟的类?

考虑以下测试:

在 SampleClass 中的每个 sysout 行上放置一个断点并在 Eclipse 中调试“Step Over”将进入 SampleClass 方法。

考虑以下将阻止静态初始化程序将 staticInt 设置为 10 的值。

但是,此代码不会调试到 SampleClass 中的方法。

是的,我已经尝试过 -javaagent 属性。

0 投票
1 回答
10461 浏览

java - 在 JUnit 测试中使用 JMockit 多次模拟静态方法

我有一个带有静态方法的类,我目前正在用 JMockit 模拟。说它看起来像:

我有另一个类(我们称之为 MyClass)调用 Foo 的静态方法;我正在尝试为这个类编写测试用例。我的 JUnit 测试使用 JMockit,看起来像这样:

这很好用,而且当测试执行时,我的 MyClass 实例在调用 Foo.getValue() 时将正确获取 Foo.FooValue.X 的枚举值。

现在,我正在尝试遍历枚举中的所有值,并反复运行测试。如果我将上面的测试代码放在一个 for 循环中,并尝试将模拟的静态方法的结果设置为每个枚举值,那是行不通的。Foo.getValue() 的模拟版本总是返回 Foo.FooValue.X,并且在我遍历枚举时永远不会返回任何其他值。

如何在单个 JUnit 测试中多次模拟静态方法?我想做这样的事情(但显然它不起作用):

有任何想法吗?

0 投票
2 回答
3611 浏览

unit-testing - 删除 JMockit 中先前定义的期望

NonStrictExcpection()我有一个对象,我在我的测试类的@Before/方法中使用 JMockit 进行模拟,setUp()以便它返回预期的值,以便正常执行我的测试类。

这对于我的所有测试方法都很好,除了我想测试此代码的非正常操作的单个测试。

我尝试在测试方法中创建一个新的期望,我认为它会覆盖 setUp 方法中的期望,但我发现 setUp 方法中的期望正在抑制新的期望。

当我删除 setUp 期望时,测试方法会按预期运行(但我所有的其他测试自然会失败)。

我应该如何编码我的测试类,以便我可以用最少的代码为每个测试正确定义期望?(我知道我可以将期望代码复制/粘贴到每个测试方法中,但如果可以避免的话,我不想这样做)。

我的测试代码看起来像这样(注意,这是一种伪代码,不能编译,但你明白了):

0 投票
1 回答
1753 浏览

java - 用 jmockit 替换继承的 final 方法

我正在尝试使用 jMockIt 用我自己的实现替换继承的 final 方法。

可以说我有以下内容:

例如,有没有一种方法可以重新定义 getX() 以始终返回 10?

我尝试按照以下方式做一些事情:

这会产生关于 jMockIt 无法为 int getX() 找到匹配方法的运行时异常。

我遇到了这个线程: http ://groups.google.com/group/jmockit-users/browse_thread/thread/27a282ff2bd4ad96

但我不太了解那里提供的解决方案。

有人能帮忙吗?

0 投票
5 回答
656 浏览

java - 使用 JRE 1.4 模拟当前时间

我目前仅限于使用 JRE 1.4(java 运行时环境),并且我有一个具有一些当前时间计算的类。我正在尝试对该类进行单元测试,但这似乎很难,因为我遇到的所有模拟工具都需要 JRE1.4 不支持的注释。

我曾尝试使用 JRE 1.4 友好版本的 mockito,但这不允许我模拟静态类。Jmockit 有一个超级简单的解决方案可供下载,但似乎没有 JRE1.4 友好版本的 Jmockit

如果我使用 JRE1.5 及更高版本(模拟出调用当前时间的方法或只是模拟出当前系统时间),有两种方法可以解决这个问题,但遗憾的是我不是。

唯一的解决方案是将当前系统时间传递给带有 +/- 天/月/年的方法。

但是,如果可能的话,我想在 JRE 1.4 环境下以模拟的方式来做。

谢谢

0 投票
1 回答
329 浏览

java - 如何替换对被测试类的私有方法的调用

好吧,我现在正在测试遗留代码。而且,我在某个地方附近可以通过这个测试,但它卡在有评论的地方。这是片段

然而,所有的值result都是模拟的。