我正在尝试单元测试我的类,它看起来像:-
class A{
private void method1(){
B b=new B();
C c=b.method2();
if(c!=null){
...
...
}
}
}
我想在类B中模拟“method2()”。我知道我们需要有一个B()的mock对象,这样每当我们调用它的方法时,就会发生模拟。这是我试过的
A aMock=Easymock.createNiceMock(A.class);
B bMock=Easymock.createNiceMock(B.class);
Powermock.expectNew(B.class).andReturn(bMock).anyTimes();
Easymock.expect(bMock.method2()).andReturn(new C()).anyTimes();
//have done all the replays and verifies
并使用amock.method1()
调用它,现在的主要问题是method2被嘲弄了(即method2()的主体没有被执行),但我无法接收C的对象作为响应。
我的测试场景是:-
我想测试类A的method1(),它反过来调用类B的method2(),但我不想让它执行它的代码(method2()),因为它是一个DB调用,而且我还需要method2()返回的C对象,所以我使用mocking来实现这一点。
如果要测试类a
的Method1()
,则不应创建a
的模拟。这意味着您不应该在执行a amock=easymock.createniceMock(a.class);
对于您的测试场景,测试将类似于:
import org.easymock.EasyMock;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(A.class)
public class ATest {
A testableA = new A();
@Test
public void testMethod1() throws Exception {
B bMock = EasyMock.createNiceMock(B.class);
PowerMock.expectNew(B.class).andReturn(bMock).anyTimes();
EasyMock.expect(bMock.method2()).andReturn(new C()).anyTimes();
PowerMock.replay(B.class);
EasyMock.replay(bMock);
testableA.method1();
//assert and validate your scenario here
}
}
您可以按照这里的文档操作。
给定一个类Foo 为什么我用Spock来嘲笑Foo 调用总是返回false? 不确定这是否有区别,但测试是在Groovy/Spock中进行的,而Foo是在Java8中进行的。
我有一个测试类包含测试方法和两个服务类和。我正在为类中的方法编写JUnit测试,该类包括对类方法的调用。在我写的测试方法中 因此,当调用时,它应该返回大小为1,但不返回此列表,返回的是一个大小为0的列表。
我按照此链接处的代码读取bmp文件中的像素值,以便能够读取像素的RGB值,当我将整个图像作为一种颜色并读取随机像素值时,它们是正确的。在此之后,我尝试制作它,以便函数也会尝试查找有多少独特的颜色,所以我添加了一个不同颜色的框到图像中,但函数仍然只能找到一种颜色。我想知道我是否不知何故没有查看BMP中包含的所有字节,但我不确定这会是怎样的,因为我是新尝试这种东西的。 为了确保代码没有找到不同颜色的像
问题内容: def size_of_dir(dirname): print(“Size of directory: “) print(os.path.getsize(dirname)) 是有问题的代码。dirname是一个目录,其中包含 130个 文件,每个文件约 1kb 。当我调用此函数时,它返回 4624 ,这 不是 目录的大小…为什么? 问题答案: 此值(4624B)代表的大小 文件 是 描
我很清楚关于这个话题有多个问题,但我就是弄不懂它的意思。问题似乎是没有将新值添加到@cacheable列表中。 调试完问题后,我发现问题似乎出在钥匙上。 下面是代码片段 所以当我调用save方法时,用于缓存的关键字是incrementing integer,或者1,2,3...但是当我尝试获取所有文档时,缓存使用SimpleKey[]作为键。如果我尝试为@Cacheable使用相同的键,我会得到S
当我使用apache/poi计算Irr值时,我得到了两倍。NaN,但在excel中同样的输入,我得到了一个负值。 那么为什么它们返回不同的价值呢?