加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Mockito模拟枚举?

发布时间:2020-12-15 04:34:09 所属栏目:Java 来源:网络整理
导读:我需要模拟以下枚举: public enum PersonStatus{ WORKING,HOLIDAY,SICK } 这是因为它在我正在测试的以下类中使用: 被测班: public interface PersonRepository extends CrudRepositoryPerson,Integer{ ListPerson findByStatus(PersonStatus personStatus
我需要模拟以下枚举:

public enum PersonStatus
{
    WORKING,HOLIDAY,SICK      
}

这是因为它在我正在测试的以下类中使用:

被测班:

public interface PersonRepository extends CrudRepository<Person,Integer>
{
    List<Person> findByStatus(PersonStatus personStatus);
}

这是我目前的测试尝试:

目前的测试:

public class PersonRepositoryTest {

    private final Logger LOGGER = LoggerFactory.getLogger(PersonRepositoryTest.class);

    //Mock the PersonRepository class
    @Mock
    private PersonRepository PersonRepository;

    @Mock
    private PersonStatus personStatus;

    @Before
    public void setUp() throws Exception {

        MockitoAnnotations.initMocks(this);
        assertThat(PersonRepository,notNullValue());
        assertThat(PersonStatus,notNullValue());
    }

    @Test
    public void testFindByStatus() throws ParseException {

        List<Person> personlist = PersonRepository.findByStatus(personStatus);
        assertThat(personlist,notNullValue());
    }
}

哪个给出以下错误:

错误:

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class PersonStatus
Mockito cannot mock/spy following:
  - final classes
  - anonymous classes
  - primitive types

我怎么解决这个问题?

解决方法

您的testFindByStatus试图断言findByStatus不返回null.

如果方法以相同的方式工作,无论personStatus param的值如何,只需传递其中一个:

@Test
public void testFindByStatus() throws ParseException {
    List<Person> personlist = PersonRepository.findByStatus(WORKING);
    assertThat(personlist,notNullValue());
}

如果其他可能值的行为可能不同,您可以测试每个值:

@Test
public void testFindByStatus() throws ParseException {
    for (PersonStatus status : PersonStatus.values()) {
        List<Person> personlist = PersonRepository.findByStatus(status);
        assertThat(personlist,notNullValue());
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读