Annyce Davis

Davis Technology Consulting

  • Home
  • About Me
  • Blog
  • Courses
  • Newsletter

Talk: Developing Maintainable Apps

August 28, 2015 by Annyce Davis

Great Android apps only include what’s needed to achieve the goals of the product, not enhance the resume of the developer. What’s more, the more maintainable an application is, the more likely it will have increased user satisfaction and decreased time to market.


So how can you do it?  Keep these four factors in mind:

  1. Choose your 3rd Party Components Wisely
  2. Keep your Code Simple
  3. Use Static Code Analysis Tools
  4. Write Unit Tests

Resources:

  • Clean Code – http://amzn.to/1DJybxH
  • Effective Java –http://amzn.to/1Ku8Xel
  • Working Effectively with Legacy Code – http://amzn.to/1Jqe1PA
  • Unit Testing Idioms – http://goo.gl/Bx1WbL
  • Google Code Style – http://goo.gl/8Pf6J3
  • Architecting Android – http://goo.gl/UKvmbq
  • Conquering Cyclomatic Complexity – http://goo.gl/lRoPXN

Testing Your Apps with AWS Device Farm

August 12, 2015 by Annyce Davis

Recently, I’ve been on a mission to enhance the quality of the tests in the Android applications that I work on.  To that end, I was introduced to the AWS Device Farm, a cloud based app testing platform.

It was very simple to set up and like most AWS products comes with free tier usage. You move through five steps (at most) and then your app will be tested on the devices you choose.  To get an idea of how it works, just follow the screenshots below.

1. Choose Your Application

2. Configure a test

3. Select Devices

Then you are presented with some additional device configuration options (bluetooth, NFC, GPS, etc.). Finally, you have the ability to review and submit your run configuration. Once all of the devices have completed running your tests you can then drill down and view the individual results of each test.

Test Results


If you try it out, leave me your thoughts below.

Updated: Mocking Hibernate Create Criteria in Grails’ Unit Test with GMock

December 6, 2010 by Annyce Davis

Using the GMock Library I have updated my unit tests to mock out the create criteria methods the following way:

void testSomeFunction() {
def results = []

def mockCriteria = mock() {
list(instanceOf(Closure)).returns(results)
}

mock(Book).static.createCriteria().returns(mockCriteria)

play {
assertEquals null, bookService.getDefaultBook(null)
}
}

You need to add the following to the top of the unit test file with the import statements:

import org.gmock.*
import static org.hamcrest.Matchers.*

@WithGMock

Also add the following to your BuildConfig.groovy:

dependencies {
test "org.gmock:gmock:0.8.0"
test "org.hamcrest:hamcrest-all:1.0"
}

I learned this from the following blog post: http://adhockery.blogspot.com/2010/01/using-gmock-to-complement-grails.html

Unit Testing a Android Activity which contains a Runnable

November 16, 2010 by Annyce Davis

In order to unit test an Android Activity to verify that the Runnable is called you need to add a call to waitForIdle to the Instrumentation, which is called when all Runnables have been executed.

Here is the activity that we are testing:

public class SplashScreenActivity extends Activity {

public final int SPLASH_DISPLAY_LENGTH = 1200;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splash);

new Handler().postDelayed(new Runnable() {

public void run() {
Intent mainIntent = new Intent(SplashScreenActivity.this, NextActivity.class);
startActivity(mainIntent);
finish();
}

}, SPLASH_DISPLAY_LENGTH);
}
}

Here is the method in the Unit Test Class:

public void testSubLaunch() {
SplashScreenActivity mActivity = startActivity(new Intent(), null, null);
getInstrumentation().waitForIdle(new Runnable() {
public void run() {
assertNotNull(getStartedActivityIntent());
assertTrue(isFinishCalled());
}
});
}
« Previous Page
Next Page »

Follow Me

  • Bluesky

Categories

  • Android (61)
  • Career (5)
  • Communication (4)
  • Flutter (1)
  • Git (4)
  • Gradle (4)
  • Grails (23)
  • iOS (1)
  • Java (8)
  • JavaScript (6)
  • Kotlin (17)
  • Life (5)
  • Public Speaking (26)
  • Revenue (2)
  • RxJava (1)
  • Software Development (14)
  • Twitter (3)
  • Uncategorized (11)
  • Video Course (5)

Follow Me

  • Bluesky

Copyright © 2025 · All Rights Reserved · Log in