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

"No runnable Methods" exception

Jaggywaggy

Lurker
Mar 13, 2019
4
0
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.
 

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones