Junit测试错误 - DictionaryServiceTest.testAddDictionary:65预期: 但是:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Junit测试错误 - DictionaryServiceTest.testAddDictionary:65预期: 但是:相关的知识,希望对你有一定的参考价值。

考试班

@RunWith(SpringRunner.class)
@SpringBootTest
public class DictionaryServiceTest {

    @MockBean
    private DictionaryService dictionaryService;

    @MockBean
    private DictionaryRepo dictionaryRepo;

    @Before
    public void before() {
        System.out.println("Before method in dictionary service");
    }

    @After
    public void after() {
        System.out.println("After method in dictionary service ");
    }

    @Test
    public void testAddDictionary() {

        //Set<DictionaryValue> dictionaryValue = new HashSet<>();


        Dictionary dictionary = new Dictionary();
        dictionary.setId(1);
        dictionary.setDictionaryName("Test Dictionary");
        dictionary.setDictionaryDescription("Running first test case of dictionary");
        dictionary.setDictionaryKey("123456789");
        dictionary.setStatus("2");
        dictionary.setCreatedOn(new Date());
        dictionary.setUpdatedOn(new Date());
        //dictionary.setDictionaryValues(dictionaryValue);



        Mockito.when(dictionaryRepo.save(dictionary)).thenReturn(dictionary);

        assertThat(dictionaryService.addDictionary(dictionary)).isEqualTo(dictionary);


    }

模型类

@Entity
public class Dictionary {

    @Id
    @GeneratedValue()
    private int id;
    private String dictionaryName;
    private String dictionaryDescription;
    private String dictionaryKey;
    private String status;
    private Date createdOn;
    private Date updatedOn;

    @OneToMany(mappedBy = "dictionary", cascade = CascadeType.ALL)
    private Set<DictionaryValue> dictionaryValues; 

    }

当我为这个模型执行测试类时,我对此模型的误差超过了。我不知道为什么有人能帮助我?

服务类和Repository接口工作正常,它们按预期工作。

..............................................................................................................................................................

答案

该错误意味着您已设置期望将使用字典对象调用dictionaryRepo上的save方法,但是使用null调用它。

另一答案

不要模仿服务及其依赖:这没有意义。

因此,假设服务与ApplicationContext中的存储库一起自动装配,只需将真实服务中的自动装配到您的测试类中,如下所示。

@Autowired
private DictionaryService dictionaryService;

以上是关于Junit测试错误 - DictionaryServiceTest.testAddDictionary:65预期: 但是:的主要内容,如果未能解决你的问题,请参考以下文章

java junit4-JUnit测试报 No socket available 错误

2类,Java中的1 Junit测试错误。错误消息

SpringBoot 在运行 Junit 测试时禁用 DataSourceAutoconfigure 错误

SpringJUnit4ClassRunner 与 JUnit 测试套件错误

如何编写junit测试用例来测试outofmemory错误

Junit测试代码时出现initializationError 错误