- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 abstract
类,我想模拟它以进行测试:
public abstract class Foo {
public abstract void bar();
public void baz() {
System.out.print("Hi from baz!");
}
}
如果我使用 easyMock Foo mock = createNiceMock(Foo.class)
然后调用 mock.baz()
我会得到一个 java.lang.NullPointerException
。如果我将 baz()
更改为 final
,一切都会顺利进行(我认为这与 EasyMock 无法模拟 final
方法有关)但我希望能够调用 baz()
而无需执行此操作。
有没有办法使用 EasyMock 创建模拟对象,让我可以调用非抽象方法?
我当前使用的一种解决方法是:
Foo mock = new Foo() {
@Override
public void bar() {
return;
}
}
但这太丑了。
最佳答案
所以我找到了解决我的问题的方法。您可以在 EasyMock 中创建部分模拟:
Foo mock = EasyMock.createMockBuilder(Foo.class)
.addMockedMethod("bar")
.createNiceMock();
需要注意的是,如果类有实例变量,因为您没有使用new
,它们将不会被初始化!如果有人有这方面的解决方法,那将会很有用。这是为此类创建一个部分:
public abstract class Foo {
public double myInstanceVariable = 2;
public abstract void bar();
public void baz() {
System.out.print("Hi from baz!");
}
}
可以调用 mock.myInstanceVariable
并获取 2
。
关于java - 抽象类中的 createMock 和非抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15779508/
我有一个 abstract 类,我想模拟它以进行测试: public abstract class Foo { public abstract void bar(); public v
为了我一生的挚爱,我无法弄清楚 createMock($type) 和 getMockBuilder($type) 之间的区别 我正在浏览原始文档,只有一个我不明白的衬里。 ... you can u
我正在将应用程序从 Grails 2.4.4 升级到 Grails 3.0.9,但我找不到有关如何在 Grails 3 中执行 mockFor、createMock 和需求的任何信息。 我曾经做过这样
我在编写 junit 测试时遇到了 EasyMock 的意外行为。最后,我删除了一些代码行,直到剩下一行创建模拟,看看发生了什么。 @Test public void testSimple() thr
我是一名优秀的程序员,十分优秀!