固执并不能涵盖我在单元测试中的方法



我正在尝试使用固执方法来实现单元测试。但是,当我使用该方法时,没有测试类的线覆盖范围。

服务类

@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);
    }
}

固定服务类

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"));
    }
}

单元测试中的子键是指时您不希望它干扰的依赖项。
确实,您想单位测试组件行为,并模拟或固执,可能对其副作用。
在这里,您将测试的课程存根。这个不成立。

但是,当我固执时,没有线覆盖 测试的课程。

执行使用ServiceStub实例的测试不会在单位测试Service代码方面覆盖。

Service类中

@Autowired
private Client client;

因此您可以模拟或固执。

如果您使用的是弹簧靴,则可以进行集成测试大部分零件,并且仅使用@MockBean

模拟外部API调用
@SpringBootTest
@RunWith(SpringRunner.class)
public class ServiceTest {
@Autowired
private Service service;
@MockBean
 private Client client;
@Test
public void testDownloadContent(){
    //given(this.client.ArgumentMatchers.any(url) //addtional matchers).willReturn(//somebytes);
    service = new ServiceStub();
    Assert.assertNotNull(testee.downloadContent("objectId"));
    }
 }

相关内容

  • 没有找到相关文章

最新更新