4

ドライバークラスを使用してサーバーテストケースを実行するチュートリアルを行っています。Eclipse のエラー ペインに次のエラー メッセージが表示されました: java.lang.Exception: No runnable methods。ドライバ クラスが exceptionTesting クラスを実行しようとしたときに、エラー メッセージが発生しました。

この投稿に基づいています: java.lang.exception no runnable Methods junit。テストクラスで @Test アノテーションを使用するか、Junit Jar ファイルを最新バージョンに更新することで問題が解決するようです。

Junit Jar ファイルのバージョン: 4.11

コードを確認して、エラー メッセージを回避するためにどのような変更を行うべきか教えてください。ありがとう!

ドライバークラス:

import org.junit.runner.*;
import org.junit.runners.Suite;

 @RunWith(Suite.class)
 @Suite.SuiteClasses({
     basicAnnotation.class,
     personTest.class,
     exceptionTesting.class
 })
public class UnitTestDriver {

} 

exceptionTest クラス

import org.junit.*;
import org.junit.Test;


public class exceptionTesting 
{
  public class junitTest2{
      @Test (expected = ArithmeticException.class)
      public void divisionWithException(){
          int i = 1/0;
      }

  }
}
4

1 に答える 1

4

問題は、junitTest2 が exceptionTesting 内にネストされていることです。それを解決するには、次の 2 つの選択肢があります。

1) 最上位クラスにテストがある内部クラスを取り除きます。

import org.junit.*;
import org.junit.Test;


public class exceptionTesting 
{
      @Test (expected = ArithmeticException.class)
      public void divisionWithException(){
          int i = 1/0;
      }
}

2) 最上位クラスで、テストが囲まれていることを指定し、内部クラスを静的にします。

import org.junit.*;
import org.junit.Test;

@RunWith(Enclosed.class)
public class exceptionTesting 
{
  public static class junitTest2{
      @Test (expected = ArithmeticException.class)
      public void divisionWithException(){
          int i = 1/0;
      }

  }
}

内部クラスが必要な理由がない限り、#1 を選択することをお勧めします。また、Java では、大文字の名前でクラスを開始するのが慣例であることに注意してください。したがって、exceptionTesting は ExceptionTesting になります。

于 2013-06-01T17:46:47.407 に答える