Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TDD, ти де?

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

TDD, ти де?

Інструменти для автоматизації тестів та TDD на Android. GDG DevFest 2013.

Avatar for Roman Mazur

Roman Mazur

October 27, 2013
Tweet

More Decks by Roman Mazur

Other Decks in Programming

Transcript

  1. xor eax, eax mov frametimer, eax mov frameid, 1 mov

    damage, ~99 cmp frametimer, 7 push 1 $ SET SOURCEFORMAT"FREE" IDENTIFICATION DIVISION. PROGRAM-ID. ShortestProgram. PROCEDURE DIVISION. DisplayPrompt. DISPLAY "I did it". STOP RUN. Колись програмістам набридло писати двійковий код...
  2. Якщо ви робите якусь річ втретє, ви вже мали її

    автоматизувати А як щодо тестів?
  3. Автоматизація тестів Android SDK JUnit 3 protected void setUp() {

    super.setUp(); emailView = getActivity().findViewById(R.id.login_email); } public void testLogin() { assertNotNull(emailView); } Запускається на пристрої
  4. Групи тестів @SmallTest public void testFastAction() { } @MediumTest public

    void testLongerScenario() { } @LargeTest public void testFullUseCase() { }
  5. Для запуску тестів потрібно 1. скомпілювати 2. перетворити в dex

    3. упакувати 4. встановити на пристрій час
  6. Для запуску тестів потрібно 1. скомпілювати 2. перетворити в dex

    3. упакувати 4. встановити на пристрій на JVM Так можна будувати TDD
  7. Robolectric @RunWith(RobolectricTestRunner.class) public class DbManagerTest { private DbManager dbManager; @Before

    public void initDbManager() { dbManager = new DbManager(Robolectric.application); } @Test public void cleanupShouldNotRemoveUsedRecords() { ... } }
  8. Robolectric with Gradle buildscript { repositories { mavenCentral() } dependencies

    { classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.+' } } apply plugin: 'android-test' dependencies { testCompile 'junit:junit:4.11' testCompile 'org.robolectric:robolectric:2.3-SNAPSHOT' }
  9. Robolectric with Gradle dependencies { testCompile fileTree(dir: "$buildDir/exploded-bundles", include: "*/classes.jar")

    testCompile fileTree(dir: "$buildDir/exploded-bundles", include: "*/libs/*.jar") } якщо компілятор скаже, що не може знайти щось із aar
  10. Mattock buildscript { repositories { mavenCentral() } dependencies { classpath

    'com.stanfy.mattock:gradle-plugin:1.0' } } apply plugin: ‘mattock’ $ gradle androidTest запуск JUnit 4 тестів на Android-пристроях
  11. Helium нам набридло робити одне й те саме… service {

    name 'Twitter API' description 'Piece of Twitter API' version 1.1 location "https://api.twitter.com/${version}" get "/users/show.json" spec { name 'Get user profile' parameters { user_id long optional screen_name 'string' optional include_entities boolean optional } response "UserProfile" } }