1# CarSettings Tests 2 3CarSettings tests are organized under various conveniently named directories. 4 5## multivalent 6 7These tests are independent of any particular device or deviceless SDK and 8classes. They compile against just android and unit testing libraries. These 9tests can be run on a device, emulator, or without any device using mock SDKs at 10runtime. 11 12Our goal is to increase the number of multivalent tests as they eliminate code 13duplication, reduce maintenance burden, and are portable across device and 14deviceless runs. 15 16Run these without a device (Robolectric) using following command. 17 18``` 19$ atest CarSettingsMultivalentRoboTests 20``` 21 22Or run with a device (physical or virtual) using following command. 23 24``` 25$ atest CarSettingsMultivalentDeviceTests 26``` 27 28## deviceless 29 30These tests are purely deviceless and are not guaranteed or tested on a device 31or emulator due to a direct dependency on mock SDKs or other legacy reasons. 32 33Ideally, these tests should be rare, and any tests in this category should be 34migrated to multivalent whenever possible. 35 36``` 37$ atest CarSettingsDevicelessRoboTests 38``` 39 40## deviceonly 41 42These are non-multivalent device-only (instrumentation tests) due to legacy 43reasons and/or due to any limitations (e.g. static mocking support) that 44prevents them from migrating to multivalent. 45 46However, with the availability of deviceless SDKs (e.g. Robolectric or 47Ravenwood) and better support, these tests should also be migrated to 48multivalent to make them portable across devices as well as deviceless runs. 49 50``` 51$ atest CarSettingsDeviceOnlyTests 52``` 53