具体的なクラスはどちらも無視されます。私はそれをどのように機能させるのですか? (Integer
とDouble
の両方に対してtest1()
が実行されると思います)。JUnitテスト継承が機能しない
私はJUnit 4.8.1を使用します。
更新:この問題は、JUnit自体ではなく、maven-surefire-pluginに関連しているようです。下の私の答えを見てください。
具体的なクラスはどちらも無視されます。私はそれをどのように機能させるのですか? (Integer
とDouble
の両方に対してtest1()
が実行されると思います)。JUnitテスト継承が機能しない
私はJUnit 4.8.1を使用します。
更新:この問題は、JUnit自体ではなく、maven-surefire-pluginに関連しているようです。下の私の答えを見てください。
すべてのクラスの名前が "Test"の後に変更され、現在は動作します(Concrete1Test
、Concrete2Test
)。
更新:
のmaven-確実な - プラグインのデフォルトの設定に関連しています。デフォルトでは
http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html
、シュアプラグインが自動的に次のワイルドカードパターンを持つすべてのテストクラスが含まれます:
**/Test*.java
を - そのすべてのサブディレクトリと「テスト」で始まるすべてのJavaファイル名を含んでいます。**/*Test.java
- "Test"で終わるすべてのサブディレクトリとすべてのjavaファイル名を含みます。**/*TestCase.java
- "TestCase"で終わるすべてのサブディレクトリとすべてのJavaファイル名を含みます。
これは、surefire-plugin mavenがテストの実行に使用するため、クラス名に基づいてテストを「検出」するためです。彼らはいくつかの受け入れられたパターンの1つと一致しなければなりません、BlahTestはそれらの1つです。ここでは、デフォルトの設定とあなたの設定でそれらをカスタマイズする方法についての詳細です... http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html –
これは、センス。確信しているプラグイン( 'mvn test'を呼び出すときに実行されるmavenプラグイン)によって使用されるデフォルトのファイル名は' **/Test * .java'、 '**/* Test.java'、' **/* TestCase .java'。 Ref:http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#includes – matsev
私はあなたのスケルトンコードを使用して、Eclipseでこれをテストし、それがうまく働いた:
基本クラス:
package stkoverflow;
import org.junit.Test;
public abstract class GenericTests<T> {
protected abstract T getT();
@Test
public void test1() {
getT();
}
}
サブクラス:EclipseのJUnitの中ConcreteTests1を実行
package stkoverflow;
public class ConcreteTests1 extends GenericTests<Integer> {
@Override
protected Integer getT() {
return null;
}
}
をランナーはうまくいった。おそらく問題はMavenにありますか?
あなたはTestCaseを拡張する必要がありますか? –
注釈を使用する場合でも必要ですか? – agibalov
Junit4ではTestCaseを拡張する必要はありませんが、どのように実行していますか?コマンドラインから? Eclipseから? – jeff