gpt4 book ai didi

java - 使用 easymock 验证对象类型

转载 作者:行者123 更新时间:2023-12-04 07:04:49 26 4
gpt4 key购买 nike

我刚刚进入easymock的世界。我想问一下easymock是否只为接口(interface)模拟对象?
因此,在我努力理解的过程中,我编写了一个类来在 java 中生成唯一凭证。我显然不知道它将生成哪个值以用于断言内容。那么如何确保生成的凭证是 long 类型的?

这是功能

 public static Long generateID(int length) {
logger.info("Calling generateID with specify length");
Long result = null;

if (length > 0) {
StringBuffer id = new StringBuffer(length);
for (int i = 0; i < length; i++) {
id.append(NUMS[(int)Math.floor(Math.random() * 20)]);
}
result = Long.parseLong(id.toString());
}

return result;
}

这是测试类
@Before
public void setUp() {
mockgenerator = createMock(VGenerator.class);
}


/**
* Test of generateID method, of class VGenerator.
*/
@Test
public void testGenerateID() {
Long exp = (long)1;
int length = 15;
expect(mockgenerator.generateID(length)).equals(Long.class);
replay(mockgenerator);
long res = mockgenerator.generatedID(length);
assertEquals(exp.class, res.class);
}

好吧,这对你来说可能看起来很棒,但我仍然对如何做到这一点感到困惑
谢谢你的帮助

最佳答案

相信你误解了easymock是怎么用的,
调用 expect 告诉模拟对象,当你重放它时,应该调用这个调用。附加 .andReturn() 告诉模拟对象返回你放在那里的任何东西,在我的例子中是一个长值 1。
easymock 的要点是您不需要实现模拟接口(interface)来测试使用它的类。 通过模拟,您可以将一个类与其所依赖的类隔离开来,并且只测试您当前正在测试的类的包含代码。

interface VGenerator {
public Long generateID(int in);
}


@Before
public void setUp() {
mockgenerator = createMock(VGenerator.class);
}


@Test
public void testGenerateID() {
int length = 15;
expect(mockgenerator.generateID(length)).andReturn(new Long(1));
replay(mockgenerator);
myMethodToBeTested();
verify(mockgenerator);
}

public void myMethodToBeTested(){
//do stuff
long res = mockgenerator.generatedID(length);
//do stuff
}

如果我误解了你的问题,而且真的,easymock 是否只模拟接口(interface)?那么答案是肯定的,Easymock 只模拟接口(interface)。阅读文档以获得更多帮助 Easymock

关于java - 使用 easymock 验证对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1273464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com