• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

"No runnable Methods" exception

I'm currently trying to build unit tests for on the method below:

Code:
public Card attackCard(Card attackingCard, Card targetCard) {
    mAttackingCardHit = attackingCard.getAttack();
    mTarget = targetCard.getHealth();
    mAttackingCardHealth = attackingCard.getHealth();
    mTargetCardAttack = targetCard.getAttack();

    targetCard.setHealth(mTarget - mAttackingCardHit);
    attackingCard.setHealth(mAttackingCardHealth - mTargetCardAttack);

    return targetCard;


}

I'm testing it using this method:

Code:
public void attackCardTestTargetCardHealthSuccessful() {
    CardInfo cardInfoAttackingCard = new CardInfo(2, 5);
    CardInfo cardInfoTargetCard = new CardInfo(2, 5);
    Card cardAttackingCard = new Card(cardInfoAttackingCard);
    Card cardTargetCard = new Card(cardInfoTargetCard);

    Attack attack = new Attack();

    attack.attackCard(cardAttackingCard, cardTargetCard);

    assertEquals(3, cardTargetCard.getHealth());



}

and the object being built are using the below constructors:

Code:
public CardInfo(int attack, int health){

    // Fill in member variables based on the arguments passed in
    mAttack = attack;
    mHealth = health;

}

public Card(CardInfo cardInfo) {

    mAttack = cardInfo.getAttack();
    mHealth = cardInfo.getHealth();
}

public Attack() {
}

But whenever the test is ran, it fails and gives this in my logcat:

Code:
java.lang.Exception: No runnable methods
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191)
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128)
at org.junit.runners.ParentRunner.validate(ParentRunner.java:416)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
at android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:42)
at android.support.test.runner.AndroidJUnit4.<init>(AndroidJUnit4.java:36)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.buildAndroidRunner(AndroidAnnotatedBuilder.java:72)
at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:51)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at android.support.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:153)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at android.support.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:77)
at android.support.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:110)
at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:809)
at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:487)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:373)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2075)

Just from looking at the logcat I know I may have missed something and was hoping someone with a better pair of eyes might spot what I've done (or not done).

Thanks in advance.
 
Back
Top Bottom