Юнни Тест и все-все-все
Jul 11, 2015
Юнни Тести все-все-все
Мне нравится
Мне нравится
Мне нравится
• Dependency Injection
Мне нравится
• Dependency Injection
• DSL
Dependency Injection
DIinterface Lorem { int ipsum();}
DIinterface Lorem { int ipsum();}
class Dolor {
}
DIinterface Lorem { int ipsum();}
class Dolor {
private Lorem lorem;
}
DIinterface Lorem { int ipsum();}
class Dolor {
private Lorem lorem;
public void sit() {
lorem.ipsum();
}
}
DIinterface Lorem { int ipsum();}
class Dolor {
@Inject private Lorem lorem;
public void sit() {
lorem.ipsum();
}
}
DSL
DSL
DSLNotification notification
DSLNotification notification = new Builder()
DSLNotification notification = new Builder() .to(user)
DSLNotification notification = new Builder() .to(user) .subject(msgSubject)
DSLNotification notification = new Builder() .to(user) .subject(msgSubject) .body(msgBody)
DSLNotification notification = new Builder() .to(user) .subject(msgSubject) .body(msgBody) .settings(settings)
DSLNotification notification = new Builder() .to(user) .subject(msgSubject) .body(msgBody) .settings(settings) .build();
DSL
• Читабельно
DSL
• Читабельно• Геттеры
DSL
• Читабельно• Геттеры• Сеттеры
Инструменты
• Guice http://code.google.com/p/google-guice/
• TestNG http://testng.org/
• Mockito http://mockito.org
• Fest Asserts http://docs.codehaus.org/display/FEST/Fluent+Assertions+Module
Guice
Guice
Guice
• Информативные сообщения об ошибках
Guice
• Информативные сообщения об ошибках
• Биндинг в коде
Guice
• Информативные сообщения об ошибках
• Биндинг в коде• RI JSR-330
TestNG
TestNG
TestNG
• Альтернатива JUnit
TestNG
• Альтернатива JUnit
• Группировка тестов
TestNG
• Альтернатива JUnit
• Группировка тестов• Зависимости тестов
TestNG
• Альтернатива JUnit
• Группировка тестов• Зависимости тестов• Интеграция с Guice!
Mockito
Mockito
Mockito
• Исчерпывающие сообщения об ошибках
Mockito
• Исчерпывающие сообщения об ошибках
• DSL
Mockito: ПримерList mocked =
Mockito: ПримерList mocked = Mockito.mock(List.class);
Mockito: ПримерList mocked = mock(List.class);
when(mocked.get(0))
Mockito: ПримерList mocked = mock(List.class);
when(mocked.get(0)).thenReturn(“first”);
Mockito: ПримерList mocked = mock(List.class);
when(mocked.get(0)).thenReturn(“first”);
verify(mocked).get(0);
Fest Assert
FEST Assert
• DSL
• Минимализм
FEST Assert: ПримерList<String> newEmployees = ...;
FEST Assert: ПримерList<String> newEmployees = ...;
assertThat(newEmployees)
FEST Assert: ПримерList<String> newEmployees = ...;
assertThat(newEmployees)
.describedAs(“Employees hired today”);
FEST Assert: ПримерList<String> newEmployees = ...;
assertThat(newEmployees)
.describedAs(“Employees hired today”)
.hasSize(6)
FEST Assert: ПримерList<String> newEmployees = ...;
assertThat(newEmployees)
.describedAs(“Employees hired today”)
.hasSize(6)
.contains(“frodo”, “sam”);
Все вместе
Все вместеinterface Lorem { int ipsum();}
class Dolor {
@Inject private Lorem lorem;
public void sit() {
lorem.ipsum();
}
}
Все вместеinterface Lorem { int ipsum();}
class Dolor {
@Inject private Lorem lorem;
public void sit(Dummy dummy) {
dummy.setFoo(lorem.ipsum());
}
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
class DolorTest {
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
@Guice(modules=TestUnniModule.class)
class DolorTest {
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
@Guice(modules=TestUnniModule.class)
class DolorTest {
@Inject private Dolor dolor;
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
@Guice(modules=TestUnniModule.class)
class DolorTest {
@Inject private Dolor dolor;
@Test
public void testSit() {
...
}
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
@Guice(modules=TestUnniModule.class)class DolorTest { @Inject private Dolor dolor; @Test public void testSit() {
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
@Guice(modules=TestUnniModule.class)class DolorTest { @Inject private Dolor dolor; @Test public void testSit() {
Dummy dummy = new Dummy();
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
@Guice(modules=TestUnniModule.class)class DolorTest { @Inject private Dolor dolor; @Test public void testSit() {
Dummy dummy = new Dummy();
dolor.sit(dummy);
}
Все вместеinterface Lorem { int ipsum();}
class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...}}
@Guice(modules=TestUnniModule.class)class DolorTest { @Inject private Dolor dolor; @Test public void testSit() {
Dummy dummy = new Dummy();
dolor.sit(dummy);
assertThat(dummy.getFoo).isNotNull(); }
Ссылки
• Проект с примерами со слайдов https://github.com/surg/unni-test
• Guice http://code.google.com/p/google-guice/
• TestNG http://testng.org/
• Mockito http://mockito.org
• Fest Asserts http://docs.codehaus.org/display/FEST/Fluent+Assertions+Module
Спасибо!
@surg