当前位置: 首页 > 知识库问答 >
问题:

如何编写方法的单元测试?请为我解释

宋高谊
2023-03-14
public Set<String> getCompanyBlacklist(String companyİD, Pageable Pageable){
      long execStartTime = System.currentTimeMilis();
      log.info("Request with companyİD:{}", companyİD);

      List<BlackList> blackList = this.blacklistRepository.findByCompanyId(companyİD, Pageable);
      Set<String> set = blackListEntity.stream().map(be -> ne.getMsisdn()).collect(Collectors.toSet());

      log.info("finished execution in :{} MS, response size:{}", System.currentTimeMillis() - execStartTime, set.size());

      return set;
}

共有1个答案

宗政博
2023-03-14

您可以使用JUnit5,使用或不使用一些外部库(如Hamcrest或Mockito)来实现行为测试,模拟您的存储库并测试您是否获得了请求服务方法时需要获得的流数据。

作为Mockito的一个例子,您可以阅读@baeldung中关于Java 8新特性的网页(尤其是流部分):

举个例子,如果你有这样的接口:

public interface JobService {
    Stream<JobPosition> listJobs(Person person);
}

然后您可以用它进行测试:公共类UnemploymentServiceImpl实现UnemploymentService{

@Override
public Optional<JobPosition> searchJob(Person person, String searchString) {
    return jobService.listJobs(person)
      .filter((j) -> j.getTitle().contains(searchString))
      .findFirst();
    }
}

测试:

public class UnemploymentServiceImplUnitTest {

    @Mock
    private JobService jobService;

    @InjectMocks
    private UnemploymentServiceImpl unemploymentService;

    @Test
    public void givenReturnIsOfTypeOptional_whenMocked_thenValueIsEmpty() {
        Person person = new Person();

        when(jobService.findCurrentJobPosition(any(Person.class)))
      .thenReturn(Optional.empty());
    
        assertTrue(unemploymentService.personIsEntitledToUnemploymentSupport(person));
    }
}

希望你能理解这一点。还有很多额外的东西要做,比如模拟接口(jpa存储库就是接口)、测试默认值、测试可选值等等。

 类似资料:
  • 试图弄清楚我是否可以使用spring kafka和spring kafka测试为@KafkaListener编写单元测试。 我的听众课。 我的测试类别: 我的测试配置类: 有什么简单的方法可以做到这一点吗? 或者我应该以其他方式测试@KafkaListener?在单元测试中,如何确保在Kafka中收到新消息时调用@KafkaListener。

  • 问题内容: 我有一个Java课。如何进行 单元测试? 就我而言,我有课做一个二进制和。它需要两个数组,将它们求和,然后返回一个新的二进制数组。 问题答案: 使用正确的输入定义正常情况下的预期和期望输出。 现在,通过声明一个类来实现测试,将其命名为任何东西(通常是类似TestAddingModule之类的东西),并向其添加testAdd方法(即,类似于下面的方法): 编写一个方法,并在其上方添加@T

  • 我不会告诉你有关后台任务的单元测试的任何内容,因为Hangfire没有添加任何特定方法 (除了 IJobCancellationToken 接口参数)去改变任务。使用您最喜爱的工具,并照常写入单元测试。本节介绍如何测试创建的后台任务。 所有的代码示例都使用静态 BackgroundJob 类来告诉你如何做这个或那些东西,只是出于简单演示的目的。但是当你想测试调用的静态方法时,会变得很痛苦。 不用担

  • 我有一个程序,显示与名称和用户需要输入他们的字段。我怎么测试这个? AssertionError:JSON路径“$.FirstName”处没有值,异常:JSON不能为null或空 我的测试: storetest.java