Unni test

1,063 views
980 views

Published on

Published in: Technology, Design
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,063
On SlideShare
0
From Embeds
0
Number of Embeds
319
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Unni test

  1. 1. Юнни Тест и все-все-все
  2. 2. Юра Литвиненко •Джавист, скалист и тд •http://linkd.in/lytvynenko •@surg
  3. 3. Мне нравится
  4. 4. Мне нравится
  5. 5. Мне нравится • Dependency Injection
  6. 6. Мне нравится • Dependency Injection • DSL
  7. 7. Dependency Injection
  8. 8. DI interface Lorem { int ipsum();}
  9. 9. DI interface Lorem { int ipsum();} class Dolor { }
  10. 10. DI interface Lorem { int ipsum();} class Dolor { private Lorem lorem; }
  11. 11. DI interface Lorem { int ipsum();} class Dolor { private Lorem lorem; public void sit() { lorem.ipsum(); } }
  12. 12. DI interface Lorem { int ipsum();} class Dolor { @Inject private Lorem lorem; public void sit() { lorem.ipsum(); } }
  13. 13. DSL
  14. 14. DSL
  15. 15. DSL Notification notification
  16. 16. DSL Notification notification = new Builder()
  17. 17. DSL Notification notification = new Builder() .to(user)
  18. 18. DSL Notification notification = new Builder() .to(user) .subject(msgSubject)
  19. 19. DSL Notification notification = new Builder() .to(user) .subject(msgSubject) .body(msgBody)
  20. 20. DSL Notification notification = new Builder() .to(user) .subject(msgSubject) .body(msgBody) .settings(settings)
  21. 21. DSL Notification notification = new Builder() .to(user) .subject(msgSubject) .body(msgBody) .settings(settings) .build();
  22. 22. DSL • Читабельно
  23. 23. DSL • Читабельно • Геттеры
  24. 24. DSL • Читабельно • Геттеры • Сеттеры
  25. 25. Инструменты • 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
  26. 26. Guice
  27. 27. Guice
  28. 28. Guice • Информативные сообщения об ошибках
  29. 29. Guice • Информативные сообщения об ошибках • Биндинг в коде
  30. 30. Guice • Информативные сообщения об ошибках • Биндинг в коде • RI JSR-330
  31. 31. TestNG
  32. 32. TestNG
  33. 33. TestNG • Альтернатива JUnit
  34. 34. TestNG • Альтернатива JUnit • Группировка тестов
  35. 35. TestNG • Альтернатива JUnit • Группировка тестов • Зависимости тестов
  36. 36. TestNG • Альтернатива JUnit • Группировка тестов • Зависимости тестов • Интеграция с Guice!
  37. 37. Mockito
  38. 38. Mockito
  39. 39. Mockito • Исчерпывающие сообщения об ошибках
  40. 40. Mockito • Исчерпывающие сообщения об ошибках • DSL
  41. 41. Mockito: Пример List mocked =
  42. 42. Mockito: Пример List mocked = Mockito.mock(List.class);
  43. 43. Mockito: Пример List mocked = mock(List.class); when(mocked.get(0))
  44. 44. Mockito: Пример List mocked = mock(List.class); when(mocked.get(0)).thenReturn(“first”);
  45. 45. Mockito: Пример List mocked = mock(List.class); when(mocked.get(0)).thenReturn(“first”); verify(mocked).get(0);
  46. 46. Fest Assert
  47. 47. FEST Assert • DSL • Минимализм
  48. 48. FEST Assert: Пример List<String> newEmployees = ...;
  49. 49. FEST Assert: Пример List<String> newEmployees = ...; assertThat(newEmployees)
  50. 50. FEST Assert: Пример List<String> newEmployees = ...; assertThat(newEmployees) .describedAs(“Employees hired today”);
  51. 51. FEST Assert: Пример List<String> newEmployees = ...; assertThat(newEmployees) .describedAs(“Employees hired today”) .hasSize(6)
  52. 52. FEST Assert: Пример List<String> newEmployees = ...; assertThat(newEmployees) .describedAs(“Employees hired today”) .hasSize(6) .contains(“frodo”, “sam”);
  53. 53. Все вместе
  54. 54. Все вместе interface Lorem { int ipsum();} class Dolor { @Inject private Lorem lorem; public void sit() { lorem.ipsum(); } }
  55. 55. Все вместе interface Lorem { int ipsum();} class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) { dummy.setFoo(lorem.ipsum()); } }
  56. 56. Все вместе interface Lorem { int ipsum();} class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...} } class DolorTest { }
  57. 57. Все вместе interface Lorem { int ipsum();} class Dolor { @Inject private Lorem lorem; public void sit(Dummy dummy) {...} } @Guice(modules=TestUnniModule.class) class DolorTest { }
  58. 58. Все вместе 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; }
  59. 59. Все вместе 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() { ... } }
  60. 60. Все вместе 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() { }
  61. 61. Все вместе 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(); }
  62. 62. Все вместе 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); }
  63. 63. Все вместе 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(); }
  64. 64. Ссылки • Проект с примерами со слайдов 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
  65. 65. Спасибо! @surg

×