assertj-android alternatives and similar packages
Based on the "Test" category.
Alternatively, view assertj-android alternatives based on common mentions on social networks and blogs.
-
powermock
PowerMock is a Java framework that allows you to unit test code normally regarded as untestable. -
selendroid
"Selenium for Android" (Test automate native or hybrid Android apps and the mobile web with Selendroid.) Join us on IRC #selendroid on freenode. Also confirm you have signed the CLA http://goo.gl/pAvxEI when making a Pull Request. -
android-junit-report
A custom instrumentation test runner for Android that generates XML reports for integration with other tools. -
Android UI testing utils
A set of TestRules, ActivityScenarios and utils to facilitate UI and screenshot testing under given configurations: FontSizes, Locales...
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of assertj-android or a related project?
README
AssertJ Android
A set of AssertJ assertions geared toward testing Android.
Deprecated
The support libraries and play services are developing at a rate which this library cannot sustain. Additionally, we no longer think AssertJ's model for supporting alternate assertions is a good practice.
We recommend using Truth which has vastly superior extensibility model which, when coupled with things like Kotlin's apply
method create a really nice assertion experience.
Writing tests is not the most glamorous part of developing an Android application but it is an invaluable one. Using libraries like JUnit and AssertJ provide a great starting point for writing tests.
This library is an extension of AssertJ which aims to make it even easier to test Android.
Examples
AssertJ Android:
assertThat(view).isGone();
Regular JUnit:
assertEquals(View.GONE, view.getVisibility());
Regular AssertJ:
assertThat(view.getVisibility()).isEqualTo(View.GONE);
When failing, the AssertJ Android assertion produces an output which allows you
to immediately recognize the problem:
Expected visibility <gone> but was <invisible>
.
Compare that to the output of regular AssertJ Expected:<[8]> but was:<[4]>
and
regular JUnit Expected: <8> but was: <4>
and you should immediately see the
advantage.
Because AssertJ Android offers assertions directly on objects rather than properties they can be chained together.
AssertJ Android:
assertThat(layout).isVisible() .isVertical() .hasChildCount(4) .hasShowDividers(SHOW_DIVIDERS_MIDDLE);
Regular JUnit:
assertEquals(View.VISIBLE, layout.getVisibility()); assertEquals(VERTICAL, layout.getOrientation()); assertEquals(4, layout.getChildCount()); assertEquals(SHOW_DIVIDERS_MIDDLE, layout.getShowDividers());
Regular AssertJ:
assertThat(layout.getVisibility()).isEqualTo(View.VISIBLE); assertThat(layout.getOrientation()).isEqualTo(VERTICAL); assertThat(layout.getChildCount()).isEqualTo(4); assertThat(layout.getShowDividers()).isEqualTo(SHOW_DIVIDERS_MIDDLE);
Assertions exist for nearly every object that you would ever want to test, from
LinearLayout
to ActionBar
to Fragment
to MenuItem
. Everything in the
support library is included too.
To get started writing tests add the following import:
import static org.assertj.android.api.Assertions.assertThat;
Add-On Modules
Modules are also provided for the add-on Android libraries. Add the dependency (listed below) and use the following imports:
- support-v4:
import static org.assertj.android.support.v4.api.Assertions.assertThat;
- play-services:
import static org.assertj.android.playservices.api.Assertions.assertThat;
- appcompat-v7:
import static org.assertj.android.appcompat.v7.api.Assertions.assertThat;
- mediarouter-v7:
import static org.assertj.android.mediarouter.v7.api.Assertions.assertThat;
- gridlayout-v7:
import static org.assertj.android.gridlayout.v7.api.Assertions.assertThat;
- cardview-v7:
import static org.assertj.android.cardview.v7.api.Assertions.assertThat;
- recyclerview-v7:
import static org.assertj.android.recyclerview.v7.api.Assertions.assertThat;
- palette-v7:
import static org.assertj.android.palette.v7.api.Assertions.assertThat;
Extending
The provided assertions have also been designed to be extended for any custom controls you have developed.
public class CustomLayout extends LinearLayout {
public int getBehavior() {
/* ... */
}
}
Use the following pattern to set up your assertions.
public class CustomLayoutAssert extends AbstractLinearLayoutAssert<CustomLayoutAssert, CustomLayout> {
public static CustomLayoutAssert assertThat(CustomLayout actual) {
return new CustomLayoutAssert(actual);
}
public CustomLayoutAssert(CustomLayout actual) {
super(actual, CustomLayoutAssert.class);
}
public CustomLayoutAssert hasSomeBehavior() {
isNotNull();
assertThat(actual.getBehavior())
.overridingErrorMessage("Expected some behavior but was doing other behavior.")
.isEqualTo(42)
return this;
}
}
Now static import CustomLayoutAssert.assertThat
in your test classes.
For more information about writing custom assertions see the official documentation.
Download
Android module:
androidTestCompile 'com.squareup.assertj:assertj-android:1.2.0'
support-v4 module:
androidTestCompile 'com.squareup.assertj:assertj-android-support-v4:1.2.0'
Google Play Services module:
androidTestCompile 'com.squareup.assertj:assertj-android-play-services:1.2.0'
appcompat-v7 module:
androidTestCompile 'com.squareup.assertj:assertj-android-appcompat-v7:1.2.0'
Design library module:
androidTestCompile 'com.squareup.assertj:assertj-android-design:1.2.0'
mediarouter-v7 module:
androidTestCompile 'com.squareup.assertj:assertj-android-mediarouter-v7:1.2.0'
gridlayout-v7 module:
androidTestCompile 'com.squareup.assertj:assertj-android-gridlayout-v7:1.2.0'
cardview-v7 module:
androidTestCompile 'com.squareup.assertj:assertj-android-cardview-v7:1.2.0'
recyclerview-v7 module:
androidTestCompile 'com.squareup.assertj:assertj-android-recyclerview-v7:1.2.0'
palette-v7 module:
androidTestCompile 'com.squareup.assertj:assertj-android-palette-v7:1.2.0'
Snapshots of the development version are available in Sonatype's snapshots
repository.
License
Copyright 2013 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the assertj-android README section above
are relevant to that project's source code only.