MS Lesson 19: Unit Test

1. Unit test klasinin uzerine: @ExtendWith(MockitoExtension.class) 


2. 

package guru.springframework.cruddemo.testing;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class CalculatorServiceTest {

@InjectMocks
private CalculatorService calculatorService;

@Test
public void whenSumTwoNumbersThenSuccess() {
// Arrange

// Act
int result = calculatorService.sum(5, 7);

// Assert
Assertions.assertThat(result).isEqualTo(12);
}

}



3.

package guru.springframework.cruddemo.testing;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class CalculatorServiceTest {

@InjectMocks
private CalculatorService calculatorService;

@Test
public void whenSumTwoNumbersThenSuccess() {
// Arrange

// Act
int result = calculatorService.sum(5, 7);

// Assert
Assertions.assertThat(result).isEqualTo(12);
}

@Test
public void whenFirstDivideSecondThenSuccess() {
// Arrange

// Act
int result = calculatorService.divide(10, 2);

// Assert
Assertions.assertThat(result).isEqualTo(5);
}

@Test
public void whenFirstDivideToZeroThenException() {
// Arrange

// Act

// Assert
Assertions.assertThatThrownBy(() -> calculatorService.divide(5, 0))
.isInstanceOf(ArithmeticException.class)
.hasMessage("/ by zero");
}

}



4. Parametrized test

@ParameterizedTest(name = "sum({0}, {1}) should be {2}")
@CsvSource({
"5, 7, 12",
"0, 0, 0",
"-1, 1, 0",
"100, 200, 300"
})
void whenSumTwoNumbersThenSuccess(int first, int second, int expected) {
int result = calculatorService.sum(first, second);

Assertions.assertThat(result).isEqualTo(expected);
}


5. 

package guru.springframework.cruddemo.service.impl;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.util.Optional;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import guru.springframework.cruddemo.dto.response.AccountResponse;
import guru.springframework.cruddemo.entity.Account;
import guru.springframework.cruddemo.mapper.AccountMapperMapstruct;
import guru.springframework.cruddemo.repository.AccountRepository;

@ExtendWith(MockitoExtension.class)
class AccountServiceImplTest {

@Mock
private AccountRepository accountRepository;

@Mock
private AccountMapperMapstruct mapperMapstruct;

@InjectMocks
private AccountServiceImpl accountService;

@Test
void getById_whenAccountExists_returnsMappedResponse() {
// Arrange
Long id = 1L;
Account account = new Account();
account.setId(id);
account.setName("Ali");

AccountResponse expected = new AccountResponse();
expected.setName("Ali");

when(accountRepository.findById(id)).thenReturn(Optional.of(account));
when(mapperMapstruct.toResponse(account)).thenReturn(expected);

// Act
AccountResponse result = accountService.getById(id);

// Assert
assertThat(result).isEqualTo(expected);
verify(accountRepository, times(1)).findById(id);
verify(mapperMapstruct, times(1)).toResponse(account);
}

@Test
void getById_whenAccountNotFound_throwsRuntimeException() {
Long id = 99L;
when(accountRepository.findById(id)).thenReturn(Optional.empty());

assertThatThrownBy(() -> accountService.getById(id))
.isInstanceOf(RuntimeException.class)
.hasMessage("-------> Xeta");

verify(mapperMapstruct, never()).toResponse(any());
}

}







































Комментарии

Популярные сообщения из этого блога

Interview questions

Lesson1: JDK, JVM, JRE

Lesson_2: Operations in Java