Владимир
Лебедко
процесс исследования, испытания программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определённым образом
t
Компилятор + Статический анализатор
Автоматизированный тест
QA инженер
Клиент
Разработчик
Int a = 5
Int b = 10
Calculator calc = new Calculator();
int actual = calc.sum(a,b);
assertEqual(15,actual)
Зависимости
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Команды
gradlew test
assertFalse
Assert.
Hamcrest
assertThat(actual,is(not(equal(matcher)))
assertThat(T actual, Matcher<? super T> matcher)
Интерфейс
testCompile group: 'org.hamcrest', name: 'hamcrest-library', version:'1.3'
testCompile group: 'org.hamcrest', name: 'hamcrest-core', version:'1.3'
Зависимости
Shazamcrest
testCompile group: 'com.shazam', name: 'shazamcrest', version: '0.11'
assertThat(
actualPerson,
sameBeanAs(expectedPerson)
.with("address.streetName", startsWith("Via"));
@Mock
@InjectMock
@Spy
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19'
Dependency
when(user.getName()).thenReturn("John");
doReturn(true).when(user).getName());
ArgumentCaptor<SomeData> captor;
captor = ArgumentCaptor.forClass(SomeData.class);
verify(other, times(1))
.doSomething(captor.capture());
// Assert the argument
SomeData actual = captor.getValue();
assertEquals("Some inner data", actual.innerData);
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestDrivenApplication.class})
@WebAppConfiguration
public class ProductDiscountControllerTest {
@Autowired
WebApplicationContext wac;
MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.
webAppContextSetup(this.wac)
.dispatchOptions(true).build();
}
@Test
public void getDiscount() throws Exception {
mockMvc.perform( MockMvcRequestBuilders
.get("/api/discount/1?clientId=2")
.accept(MediaType.ALL))
.andDo(print())
.andExpect(MockMvcResultMatchers.status().isOk());
}