Ошибка подтверждения теста Junit 3, но с 0 - PullRequest
0 голосов
/ 04 июля 2019

Я работаю с микросервисами с модульным тестом.У меня есть службы Dal, которые экономят на базе данных, и другая служба учетных записей, которая должна быть сохранена на службе Dal.Когда я тестирую свой код, он выглядит так, как будто мой код работает: синий знак появился, но говорит, что моя логика неверна.Так что в этом сценарии я ожидаю получить размер 3, однако я получаю размер 0

Любой совет?

Спасибо за ответы

    public class AccountEntity {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;

        @Column(nullable = false)
        private String Address;

        @Column(nullable = false)
        private String Password;

        @Column(nullable = false)
        private String authorizedPersonCode;

        @Column(nullable = false)
        private LocalDateTime creationDate;

        @Column(nullable = false)
        private boolean isActive;
    private static final String SAVE_ACCOUNT_URL = "http://localhost:8443/api/v1/accounts";

        @Before
        public void AccountInit() {

            AccountModel AccountModel1 = AccountModel.builder()
                    .Address("f.k@account.com.tr").Password("Try2017")
                    .authorizedPersonCode("").creationDate(LocalDateTime.now()).isActive(true).build();


            HttpEntity<AccountModel> httpEntity1 = new HttpEntity<AccountModel>(AccountModel1);

            restTemplate.postForEntity(SAVE_ACCOUNT_URL, httpEntity1, AccountModel.class);


            AccountModel AccountModel2 = AccountModel.builder()
                    .Address("fk@tr").Password("2017")
                    .authorizedPersonCode("").creationDate(LocalDateTime.now()).isActive(false).build();

            HttpEntity<AccountModel> httpEntity2 = new HttpEntity<AccountModel>(AccountModel2);

            restTemplate.postForEntity(SAVE_ACCOUNT_URL, httpEntity2, AccountModel.class);


            AccountModel AccountModel3 = AccountModel.builder()
                    .Address("fu@..com.tr").Password("Ve7")
                    .authorizedPersonCode("").creationDate(LocalDateTime.now()).isActive(true).build();

            HttpEntity<AccountModel> httpEntity3 = new HttpEntity<AccountModel>(AccountModel3);

            restTemplate.postForEntity(SAVE_ACCOUNT_URL, httpEntity3, AccountModel.class);
        }

        @Test
        public void testGetAccountsFromDalSuccess() {

            PagedResources<AccountModel> resultAccounts = DelegatorService.getAccounts();

            Assert.assertEquals(3, resultAccounts.getContent().size());

        }
public PagedResources<AccountModel> getAccounts() { 
    UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString(AccountDalURL);
    ResponseEntity<PagedResources<AccountModel>> accountModel = restTemplate.exchange(
                                  uriComponentsBuilder.build().toUri(), 
                                  HttpMethod.GET, 
                                  null, 
                                  new ParameterizedTypeReference<PagedResources<AccountModel>>() { }
                              ); 

    if (accountModel.getStatusCode().equals(HttpStatus.OK)) { 
        return accountModel.getBody(); 
    } else { 
        return null; 
    } 
}

1 Ответ

0 голосов
/ 04 июля 2019

Ваш модульный тест, похоже, выполняет вызов веб-службы RESTful.Скорее всего, это не удастся, потому что это на самом деле интеграционный тест, для которого требуется тестовый жгут, чтобы контейнер (или что-то еще) мог загрузить и запустить ваш веб-сервис (используя SpringRunner, например, если используется Spring) и правильно создать / внедрить ваш restTemplate и т. Д.

Если вы пытаетесь выполнить модульное тестирование, вам не следует полагаться на внешние сервисы (базы данных, веб-сервисы, файловые системы и т. Д.) Для своих тестов.

...