README.md
1 # Wifi Unit Tests
2 This package contains unit tests for the android wifi service based on the
3 [Android Testing Support Library](http://developer.android.com/tools/testing-support-library/index.html).
4 The test cases are built using the [JUnit](http://junit.org/) and [Mockito](http://mockito.org/)
5 libraries.
6
7 ## Running Tests
8 The easiest way to run tests is simply run
9
10 ```
11 runtest frameworks-wifi
12 ```
13
14 `runtest` will build the test project and push the APK to the connected device. It will then run the
15 tests on the device. See `runtest --help` for options to specify individual test classes or methods.
16
17 **WARNING:** You have to build the components under test (wifi-service, etc) first before you run
18 runtest for changes there to take effect. You can use the following command from your build root to
19 build the wifi service and run tests.
20
21 ```
22 mmma frameworks/opt/net/wifi/tests && runtest frameworks-wifi
23 ```
24
25
26 If you manually build and push the test APK to the device you can run tests using
27
28 ```
29 adb shell am instrument -w 'com.android.server.wifi.test/android.support.test.runner.AndroidJUnitRunner'
30 ```
31
32 ## Adding Tests
33 Tests can be added by adding classes to the src directory. JUnit4 style test cases can
34 be written by simply annotating test methods with `org.junit.Test`.
35
36 ## Debugging Tests
37 If you are trying to debug why tests are not doing what you expected, you can add android log
38 statements and use logcat to view them. The beginning and end of every tests is automatically logged
39 with the tag `TestRunner`.
40
41 ## Code Coverage
42 If you would like to collect code coverage information you can run the `coverage.sh` script located
43 in this directory. It will rebuild parts of your tree with coverage enabled and then run the tests,
44 similar to runtest. If you have multiple devices connected to your machine make sure to set the
45 `ANDROID_SERIAL` environment variable before running the script. You must supply an output directory
46 for results. By default the results are generated as a set of HTML pages. For example, you can use
47 the following from the root out your source tree to generate results in the wifi_coverage directory
48
49 ```
50 frameworks/opt/net/wifi/tests/wifitests/coverage.sh wifi_coverage
51 ```
52