java/scala lab: Юрий Литвиненко - lightning talk

Post on 11-Jul-2015

295 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Юнни Тести все-все-все

Юра Литвиненко

•Джавист, скалист и тд•http://linkd.in/lytvynenko

•@surg

Мне нравится

Мне нравится

Мне нравится

• 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

top related