当我运行我的Junit4测试时,我现在使用@RunWith(SpringJUnit4ClassRunner.class)注释,它允许我将Spring Beans注入我的测试类.
我想使用JMock 2框架(我没有真正的经验),但我看到的例子需要以下内容@RunWith(JMock.class).
所以我的问题是我可以将JMock和Spring与我的JUnit4测试一起使用,如果是这样的话怎么样?例如,是否有一个也支持JMock的Spring测试运行器?
谢谢,
理查德
我想测试一个对象的特定字段是否与我指定的值匹配.在这种情况下,它是S3Bucket对象内的存储桶名称.据我所知,我需要为此编写一个自定义匹配器:
mockery.checking(new Expectations() {{
one(query.s3).getObject(with(
new BaseMatcher<S3Bucket>() {
@Override
public boolean matches(Object item) {
if (item instanceof S3Bucket) {
return ((S3Bucket)item).getName().equals("bucket");
} else {
return false;
}
}
@Override
public void describeTo(Description description) {
description.appendText("Bucket name isn't \"bucket\"");
}
}), with(equal("key")));
...
}});
Run Code Online (Sandbox Code Playgroud)
如果有更简单的方法可以做到这一点会很好,例如:
mockery.checking(new Expectations() {{
one(query.s3).getObject(
with(equal(methodOf(S3Bucket.class).getName(), "bucket")),
with(equal("key")));
...
}});
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我这样的事情吗?我想在这种情况下我已经解决了我的问题,但这不是我第一次想要更简单的方法.
我有这样的情况 - 我有接口(说MyInterface)和简单的部分实现(AbstractMyInterface).后者添加了一些我想测试的受保护方法.
目前我只是手工编写一个模拟对象,它将AbstractMyInterface受保护的方法扩展并导出为public.有没有更简单的方法 - 例如使用JMock +脚本?
我有一个A类,它有一个由B类代表的内部Cache.这个内部类是私有的,因为缓存不需要对外部消费者可见,只是为了帮助外部类A.我使用的是Jmock和Java
public class A {
...
private class B {
...
public void testMethod() {
//The method I want to unit test
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
如上所示.我不确定如何对来自私有内部类B的testMethod()进行单元测试(因为B类对于外部世界是不可见的).
请指教!
谢谢!
我有兴趣为我的GWT应用程序使用正确的模拟框架.据我所知,Mockito,EasyMock和jMock是Java最受欢迎的一些.有人可以列出他们最熟悉的模拟框架的优缺点,因为它与GWT有关,可以帮助GWT测试像我这样的人吗?
提前致谢.
我来自PHP测试世界,我开始用Java进行测试.
我在JUnit中看到了几个模拟SUT的工具,比如Mockito,SevenMock,ClassMock等.
我真的很感激我应该使用哪一个建议.
提前致谢!
我有一个与jmock库有关的问题.我试图模拟一个参数为long[]和的方法with(any()).有直接的方法吗?
public class A
{
public void Method_A(long[] a)
{
//Do Somthing. need to mocking
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个解决方案来模拟子类ButtonClicker中的超级调用.
Class Click {
public void buttonClick() throws java.lang.Exception { /* compiled code */ } }
Class ButtonClicker extends Click {
@Override
public void buttonClick() throws Exception {
super.buttonClick();
} }
Run Code Online (Sandbox Code Playgroud) 可能重复:
jmock模拟静态方法
我正在研究使用XX类的静态方法的旧式单元测试。现在,我已经更改了该类,以从Spring应用程序上下文中获取字段值。由于无法初始化类XX,因此单元测试现在失败。
我不能用伪支持类包装XX类,因为要测试的逻辑很复杂,并且对XX类的调用嵌套在对其他旧类的多层调用中。所以我试图找到一种方法来模拟类XX中的静态方法。有办法吗?我正在使用Jmock库。
我的方法看起来像这样:
public class Decompile extends JdbcDaoSupport
public void getRunner(){
String val = this.getJdbcTemplate().queryForObject(sql,String.class, new Object[]{1001});
}
}
Run Code Online (Sandbox Code Playgroud)
请建议我如何嘲笑这个.