gpt4 book ai didi

java - stub 没有涵盖我在单元测试中的方法

转载 作者:行者123 更新时间:2023-12-02 10:10:16 24 4
gpt4 key购买 nike

我正在尝试使用 stub 方法来实现单元测试。但是,当我对该方法进行 stub 时,测试类没有行覆盖。

服务等级

@Service
@Slf4j
public class Service {

@Autowired
private Client client;

private String doclinkUrl = "www.website.com"

public byte[] downloadContent(String objectId) {
String url = doclinkUrl + "documents/" +objectId + "/binary";
return client.target(url).request().get(byte[].class);
}
}

stub 服务类

public class ServiceStub extends Service {

@Override
public byte[] downloadContent(String objectId) {
return "test".getBytes();
}

}

测试服务类

@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {

@InjectMocks
private Service testee;

@Test
public void testDownloadContent(){
testee = new ServiceStub();
Assert.assertNotNull(testee.downloadContent("objectId"));
}

}

最佳答案

单元测试中的子引用是指在对组件进行单元测试时您不希望它干扰的依赖项。
事实上,您想要对组件行为进行单元测试,并模拟或 stub 可能对其产生副作用的依赖项。
这里你 stub 被测试的类。这个不成立。

However, when I stub the method, there is no line coverage of the tested class.

在使用 ServiceStub 实例的情况下执行测试当然不会涵盖 Service 代码的单元测试。

Service 类中,您要隔离的依赖项是:

@Autowired
private Client client;

所以你可以 mock 或 stub 它。

关于java - stub 没有涵盖我在单元测试中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049258/

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