Comments (6)
Agreed @Brave-Warrior. This has been on my backlog for a while as the landscape has certainly changed since the initial version of this document.
from android-best-practices.
As a brief summary of my thoughts how to write tests:
- Minimize explicit Android dependencies in your code through abstraction and separation of concerns. Android dependencies require you to use instrumentation tests, which are considerably slower than strictly Java (JVM) based tests.
- Start with unit tests, driven by JUnit4.
- Use Mockito for mock definitions
- Use descriptive names for the unit test to aid in defining expected behavior.
- Use good test structure: Arrange, Act, Assert.
- Separate arrangement definitions into an "arrange builder" to improve test readability.
- Use AssertJ for assertions.
- Add integration and UI tests once their business value is justified.
- Use PowerMock for mocking statics and final classes as a last resort.
- Be aware that pure Java unit testing has its limits, and that writing specific Android tests still remains important in some cases - for example; database handling.
@tomaszpolanski might have some input here too.
from android-best-practices.
When using Rx and "scheduled" observable, either inject schedulers or something that provides them.
Then in test you can use TestScheduler to test timer related functionality.
from android-best-practices.
@peter-tackage agree with your points. But would extend the following items with the links to appropriate resources or detailed description:
- Use Mockito for mock definitions
add link for Mockito; the recommendations how to mock objects and the check behaviour in the better/best way
- Use AssertJ for assertions.
Link to AssertJ would be good and what are the advantages of that
- Add integration and UI tests once their business value is justified.
not clear enough
The other points are quite clear and could be added to the best practices.
from android-best-practices.
@tomaszpolanski Agreed. Testing Rx is probably worth it's own section.
from android-best-practices.
@Brave-Warrior I'll be progressing the testing section update under #114
from android-best-practices.
Related Issues (20)
- Recommend Dependency Injection using Dagger 2
- Recommend sharing your **debug** signing key HOT 1
- Recommend sharing your IDE code formatters HOT 4
- Simplify Gradle recommendations
- Simplify Android Studio recommendation HOT 2
- Add minSdk recommendation new projects HOT 1
- Encourage sensible use of Android Support Annotations
- Add RxJava testing guidance HOT 1
- Revise our recommendations for persistence storage HOT 2
- Add reference to Spice program in summary HOT 2
- Investigate different format for README HOT 3
- Recommend using MVP as application Architecture HOT 1
- Adding an Android logo and Futurice label below it HOT 1
- Colors.xml: use two levels of color definition HOT 4
- Always use Proguard (in debug too!) HOT 2
- Jackson link is dead :)
- Managing dependencies
- Лучшие практики на Андроид
- Can I learn Android Development in Java as a beginner? HOT 2
- Andrpid
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android-best-practices.