gpt4 book ai didi

java - Spring bean 测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:41 25 4
gpt4 key购买 nike

我有三个 bean 类,A、B 和 C。

A 类依赖于 B 类和 C 类属性。

如何在不加载 B 类和 C 类的情况下编写 Junit 测试用例来测试 A 类?

我知道这个问题很冗长,如果有人有想法请给出一些提示。

问候,拉朱科马图里

最佳答案

使用类似 EasyMock 的 Mock 框架或 Mockito并注入(inject) B 和 C 的模拟版本。

您可能应该完全不用 Spring 来做到这一点,只需以编程方式注入(inject) Mocks。

示例:

// Three Interfaces:
public interface FooService{
String foo(String input);
}
public interface BarService{
String bar(String input);
}
public interface BazService{
String baz(String input);
}

// Implementation for FooService that uses the other two interfaces
public class FooServiceImpl implements FooService{
public void setBarService(BarService barService){
this.barService = barService;
}
private BarService barService;
public void setBazService(BazService bazService){
this.bazService = bazService;
}
private BazService bazService;
@Override
public String foo(String input){
return barService.bar(input)+bazService.baz(input);
}
}

// And now here's a test for the service implementation with injected mocks
// that do what we tell them to
public class FooServiceImplTest{

@Test
public void testFoo(){
final FooServiceImpl fsi = new FooServiceImpl();

final BarService barService = EasyMock.createMock(BarService.class);
EasyMock.expect(barService.bar("foo")).andReturn("bar");
fsi.setBarService(barService);

final BazService bazService = EasyMock.createMock(BazService.class);
EasyMock.expect(bazService.baz("foo")).andReturn("baz");
fsi.setBazService(bazService);

EasyMock.replay(barService, bazService);

assertEquals(fsi.foo("foo"), "barbaz");
}

}

关于java - Spring bean 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7257224/

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