spring-boot和mockito测试 - 为什么我的测试失败了?

时间:2018-05-10 10:28:21

标签: unit-testing spring-boot mockito spring-boot-test

在我现在正在工作的应用程序中,我需要实现一些测试并在它们的基础上进行构建。我一直在阅读和尝试一些事情,但没有取得多大成功。

目标是开始回填测试应用程序的服务层。第一个要涵盖的是token token { <[A..Za..z0..9;!#$%&'*+^_`{|}~-]>+ }

所以,我的想法是断言我们在应用程序上使用的测试用户返回自己。到目前为止的测试类是:

UserService

@RunWith(MockitoJUnitRunner.class) @SpringBootTest(classes = {ApplicationMain.class}) public class UserServiceTest { @Mock CentralData dataProviderMock; @InjectMocks private UserService userService; private <project>User testUser; private <project>User mockUser; @Before public void init() { MockitoAnnotations.initMocks(CentralData.class); System.out.println("dataProviderMock: " + dataProviderMock); System.out.println("userService: " + userService); userService = new UserService(dataProviderMock); testUser = createTestUser(); } private <project>User createTestUser() { testUser = new <project>User(); testUser.setSystemId("testuser"); testUser.setEmailAddress("testuser@system.com"); testUser.setFirstName("Test"); testUser.setLastName("User"); // save user userService.save(testUser); return testUser; } @Test public void whenUserIdIsProvided_thenRetrievedNameIsCorrect() { mockUser = userService.getUserById("testuser"); when(userService.getUser("testuser")).thenReturn(testUser); assertEquals(testUser, mockUser); } } 上,我有这个:

UserService

当我保存用户时,模拟的public UserService(CentralData dataProvider) { this.dataProvider = dataProvider; } 会在控制台上记录我希望它记录的内容。但在测试本身,dataProviderMock始终为空。

我理解mockUser并没有真正访问数据层和数据库,因此userService为空并不是真的错误。那么,我怎么能进行这个测试呢?

我很确定我在这里遗漏了一些非常基本的东西,但却无法真正看到它。

0 个答案:

没有答案