Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: testing/android/docs/junit.md

Issue 2882243003: Updated Robolectric documentation. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # JUnit Tests 1 # JUnit Tests
2 2
3 JUnit tests are Java unit tests. These tests run locally on your workstation. 3 JUnit tests are Java unit tests. These tests run locally on your workstation.
4 4
5 [TOC] 5 [TOC]
6 6
7 ## Writing a JUnit test 7 ## Writing a JUnit test
8 8
9 When writing JUnit tests, you must decide whether you need to use Android code. 9 When writing JUnit tests, you must decide whether you need to use Android code.
10 If you want to use Android code you must write a [Robolectric](http://robolectri c.org/) test. 10 If you want to use Android code you must write a [Robolectric](http://robolectri c.org/) test.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 ### JUnit tests with Robolectric 46 ### JUnit tests with Robolectric
47 47
48 Build these types of test using the `junit_binary` GN template. 48 Build these types of test using the `junit_binary` GN template.
49 49
50 Robolectric is a unit testing framework that lets you run tests with Android 50 Robolectric is a unit testing framework that lets you run tests with Android
51 code on your workstation. It does this by providing a special version of the 51 code on your workstation. It does this by providing a special version of the
52 Android SDK jar that can run in your host JVM. Some more information about 52 Android SDK jar that can run in your host JVM. Some more information about
53 Robolectric can be found [here](http://robolectric.org/). 53 Robolectric can be found [here](http://robolectric.org/).
54 54
55 One on the main benefits of using Robolectric framework are [shadow classes](htt p://robolectric.org/extending/).
56 Robolectric comes with many prebuilt shadow classes and also lets you define
57 your own. They work like this; whenever an object is instantiated within a
jbudorick 2017/05/15 22:56:53 nit: this; -> this:
58 Robolectric test, Robolectric looks for a cooresponding shadow class (marked by
jbudorick 2017/05/15 22:56:53 nit: cooresponding -> corresponding
59 `@Implements(ClassBeingShadowed.class)`). If found, anytime a method is invoked
jbudorick 2017/05/15 22:56:53 nit: any time
60 on the object, the shadow class' implementation of the method is invoked first.
jbudorick 2017/05/15 22:56:53 nit: class's, I believe, as class isn't plural
61 This works even for static and final methods.
62
55 #### Useful Tips 63 #### Useful Tips
56 64
57 * Use `@RunWith(LocalRobolectricTestRunner.class)` for all Chromium Robolectric tests. 65 * Use `@RunWith(LocalRobolectricTestRunner.class)` for all Chromium Robolectric tests.
58 * Use `@Config(manifest = Config.NONE)` for tests.
59 Currently, you are unable to pass your app's AndroidManifest to Robolectric.
60 * You can specify the Android SDK to run your test with with `@Config(sdk = ??)` . 66 * You can specify the Android SDK to run your test with with `@Config(sdk = ??)` .
61 67
62 > Currently, only SDK levels 18, 21, and 25 are supported in Chromium 68 > Currently, only SDK levels 18, 21, and 25 are supported in Chromium
63 > but more can be added on request. 69 > but more can be added on request.
64 70
65 #### Example Code 71 #### Example Code
66 72
67 ```java 73 ```java
68 package org.chromium.sample.test; 74 package org.chromium.sample.test;
69 75
(...skipping 20 matching lines...) Expand all
90 public void exampleTest() { 96 public void exampleTest() {
91 String testString = "test"; 97 String testString = "test";
92 98
93 // Even though these tests runs on the host, Android classes are 99 // Even though these tests runs on the host, Android classes are
94 // available to use thanks to Robolectric. 100 // available to use thanks to Robolectric.
95 assertTrue(TextUtils.equals(testString, "test")); 101 assertTrue(TextUtils.equals(testString, "test"));
96 } 102 }
97 } 103 }
98 ``` 104 ```
99 105
106 #### Example junit_binary build template.
107
108 ```python
109 junit_binary("my_robolectric_tests") {
110
111 java_files = [
112 "java/src/foo/bar/MyJUnitTest.java"
113
114 deps = [
115 "//my/test:dependency",
116 ]
117
118 # Sets app's package name in Robolectric tests. You need to specify
119 # this variable in order for Robolectric to be able to find your app's
120 # resources.
121 package_name = manifest_package
122 }
123 ```
124
100 #### Example within Chromium 125 #### Example within Chromium
101 126
102 See the [content_junit_tests](https://cs.chromium.org/chromium/src/content/publi c/android/BUILD.gn) test suite. 127 See the [content_junit_tests](https://cs.chromium.org/chromium/src/content/publi c/android/BUILD.gn) test suite.
103 128
104 ## Running JUnit tests 129 ## Running JUnit tests
105 130
106 After writing a test, you can run it by: 131 After writing a test, you can run it by:
107 132
108 1. Adding the test file to a `junit_binary` GN target. 133 1. Adding the test file to a `junit_binary` GN target.
109 2. Rebuild. 134 2. Rebuild.
110 3. GN will generate binary `<out_dir>/bin/run_<suite name>` which 135 3. GN will generate binary `<out_dir>/bin/run_<suite name>` which
111 can be used to run your test. 136 can be used to run your test.
112 137
113 For example, the following can be used to run chrome_junit_tests. 138 For example, the following can be used to run chrome_junit_tests.
114 139
115 ```bash 140 ```bash
116 # Build the test suite after adding our new test. 141 # Build the test suite after adding our new test.
117 ninja -C out/Debug chrome_junit_tests 142 ninja -C out/Debug chrome_junit_tests
118 143
119 # Run the test! 144 # Run the test!
120 out/Debug/bin/run_chrome_junit_tests 145 out/Debug/bin/run_chrome_junit_tests
121 ``` 146 ```
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698