web-dev-qa-db-ja.com

junit:テストが見つかりません

私はJavaプロジェクトを継承しており、Java開発に慣れていない。 IntelliJを使用してコードを書いています。

私の既存のプロジェクトには、次のようなフォルダー構造があります。

/myProject
  /src
    /main
      /Java
        /com.lexcorp
          /core
            /email
              /providers
                emailProvider.Java

このプロジェクトのテストを保持する新しいプロジェクトを作成しました。このプロジェクトで単体テストと統合テストの両方を開催したいと思います。現在、私の新しいプロジェクトは次のような構造になっています。

/myProjectTests
  /src
    /main
      /Java
        /com.lexcorp.core.email.providers
          emailProviderTest.Java

EmailProviderTest.Javaファイルは次のようになります。

package com.lexcorp.core.email.providers;

import junit.framework.TestCase;
import org.junit.Test;

public class EmailProviderTest extends TestCase {

    private final String username = "[testAccount]";

    private final String password = "[testPassword]";

    @Test
    public void thisAlwaysPasses() {
        assertTrue(true);
    }
}

このプロジェクトには、次のプロパティを持つ実行/デバッグ構成があります。

  • テストの種類:パッケージ内のすべて
  • テストの検索:プロジェクト全体で

この構成を実行すると、次のようなエラーが表示されます。

junit.framework.AssertionFailedError: No tests found in com.lexcorp.core.email.providers.EmailProviderTest
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.Java:84)
    at org.junit.runners.Suite.runChild(Suite.Java:127)
    at org.junit.runners.Suite.runChild(Suite.Java:26)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.Java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.Java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.Java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.Java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.Java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.Java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.Java:74)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.Java:202)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.Java:65)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:120)

「テストが見つかりません」というエラーが発生する理由がわかりません。私のプロジェクト構造は異なりますが、OS上のフォルダー構造は一致しています(これは私を混乱させる別のことです)。なぜこのエラーが発生するのですか?どうすれば修正できますか?どうもありがとうございます!

55
JQuery Mobile

私もエラーが発生していました

junit.framework.AssertionFailedError:テストが見つかりません...

しかし、私は指定するのを忘れました

defaultConfig {
    ...
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}

プロジェクトを同期した後、テストが見つかりました。だから多分それは他の誰かを助ける

121
BlackRainbow

junit.framework.TestCaseの拡張は、テストケースを実装する古いJUnit 3のアプローチで、文字testで始まるメソッドがないため機能しません。 JUnit 4を使用しているため、クラスを次のように宣言するだけです。

public class EmailProviderTest {

そして、テストメソッドは@Testアノテーションから見つけられます。

読み取り: JUnitの混乱:「テストケースの拡張」または「@Test」を使用しますか?

33
Reimeus

私もこれを得ていました:

junit.framework.AssertionFailedError:テストが見つかりません...

テストメソッドの名前をmethod1から変更することで解決

@Test
public void method1(){
    // Do some stuff...
}

testMethod1

@Test
public void testMethod1(){
    // Do some stuff...
}
12
lidox

jUnit 4を使用している場合は、extends TestCaseを使用せず、この修正されたエラーを削除します。

6
user1865456

Intellij IDEAで、Javaフレームワークについては同じ問題がありました。

  • testCaseから継承したクラス
  • Junit.framework.TestCaseをインポートしました
  • 装飾@Testを追加しました

しかし、私は一つ間違ったことをしました:メソッドの名前「テスト」で始まっていなかった、実際には:

@Test
public void getSomethingTest(){

そして、私がそれを次のように変更したとき:

@Test
public void testGetSomethingTest(){

私は解決しました:エグゼキューターはついにこのメソッドをテストメソッドとして認識することができました。 他に何も変更していません。

2
RobyB

データプロバイダーを使用していて、パラメーターの1つに次のような改行文字が含まれていたとき、それがありました。

@DataProvider
public static Object[][] invalidAdjustment() {
    return new Object[][]{
            {"some \n text", false},
            };
}

\nを削除すると問題が解決しました

0
Andrey Marchuk

私の場合、junit4-version.jarタスクのクラスパスでjunitおよび

ant-version.jar
ant-junit-version.jar
ant-junit4-version.jar

antインストールのライブラリ(/usr/share/ant/lib)。

エラーが発生しました "junit.framework.AssertionFailedError:No tests found in ..."がなかった間にant-junit4-*version*.jar 正しい場所に。

ant-optional debian/ubuntuパッケージをインストールすることでこれを修正しました:

apt-get install ant-optional
0
Lincoln