abtestgen
imperial-crystalline-recursion
45
Visit GitHub RepoTesting

An A/B Testing Library for Android...

...that makes writing simple tests simpler by using annotations.

Android Arsenal

How it works

Currently you can use two different annotations: @TextTest and @ResourceTest. @TextTest is for plugging Strings into a generated test; @ResourceTest is for plugging resource IDs. Example usage may be as follows:

@TextTest(testName="firstTest", method="setText", values={"hello", "howdy"})
TextView helloTextView;

which will automatically generate a class which you can run by calling ABTester.with(activity).run("firstTest");. Or, if you're running the test from outside of an Activity, ABTester.with() can also take a second Object parameter where you've put in the annotations.

You can also cover multiple fields in the same test, as follows:

@TextTest(testName="firstTest", method="setText", values={"hello", "howdy"})
TextView helloTextView;

@ResourceTest(testName="firstTest", method="setText", values={R.string.yo, R.string.sup})
TextView otherTextView;

@TextTest(testName="firstTest", method="setText", values={"world", "globe"})
TextView thirdTextView;

And that will generate a class which will create two tests that will cover those three TextViews.

There's also a CustomTest class which allows you to define more complex tests that may not be possible to generate with the annotation processor.

By default, tests will be weighted to have an equal chance to be selected. However, by extending the TestPicker class you can weight the tests however you like.

To obtain...

You'll want to include

maven { url "https://jitpack.io" }

in either your allprojects.repositories or your module's repositories section. Whatever you like!

You will also need the APT plugin, so you will want to put this into your root build.gradle's buildscript.dependencies:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

and apply this plugin to the modules you're doing your tests in:

apply plugin: 'com.neenbedankt.android-apt'

Then, you'll want to bang these bad boys into your build.gradles' dependencies:

apt 'com.github.imperial-crystalline-recursion.abtestgen:ab-compiler:0.4.1'
compile 'com.github.imperial-crystalline-recursion.abtestgen:ab-annotations:0.4.1'
compile 'com.github.imperial-crystalline-recursion.abtestgen:ab-lib:0.4.1'
Become a better Android Developer
Millions of developers are learning at MindOrks

Online Training Program

Featured Blogs

Our Team

MindOrks is Certainly one of the best online blog to stay on top of all the Android development news, coding and design patterns. Finally a blog I can count on to keep myself updated with latest and greatest things happening in Android world.

Vipul Shah
Android Developer
Microsoft

Become Pro in Android by watching videos

OUR LEARNERS WORK AT