4

一部のメソッドとパッケージを非推奨にしています。正しく非推奨にするために、javaDoc(@deprecarted) で次のように注釈 (@Deprecated) を指定します。

*/
@Deprecated
@Test(groups = {"domini", "models"})
public class AdrecaTest extends ModelsAbstractTest
{
    /**
     * <pre>
     * @deprecated 
     * Nova ubicació:
     * <b>{@link cat.base.sca.domini.impl.AdrecaTest#comprovarEqualsIncorrecteNul()}</b>
     * </pre>
     * Comprova el mètode equals amb valors incorrectes o nul
     */
    @Deprecated
    @Test **(enabled=false)**
    public void comprovarEqualsIncorrecteNul()
    {
        IAdreca a;

        a = new Adreca();
        a.setTipusAdreca(PT_TIPUS_ADRECA);
        a.setIdEns(PT_ID_ENS);
        a.setIdEmissor(PT_ID_EMISSOR);
        a.setIdVial(PT_ID_VIAL);
        a.setIdSigles(PT_ID_SIGLES);

だから、私はそれを指定する必要があります (有効 = false)? タイ。

4

1 に答える 1

6

@Ignore注釈を使用できます。

@Deprecated
@Test
@Ignore
public void comprovarEqualsIncorrecteNul()

Junit は、テストをスキップしたことを通知します。

テストの実行: 1、失敗: 0、エラー: 0、スキップ: 1

ドキュメントのタグにコメントを追加することもできます。

@Ignore("Ignoring deprecated test.")

より一般的には、 a を使用し@Ruleて、クラス内の非推奨のテスト メソッドを条件付きでスキップできます。

public class SkipDeprecated implements TestRule {

    @Override
    public Statement apply(final Statement stmnt, final Description d) {
        if (d.getAnnotation(Deprecated.class) == null) {
            return stmnt;
        }
        return new Statement() {
            @Override
            public void evaluate() throws Throwable {
                // Return an empty Statement object for those tests 
                // that shouldn't run.
            }
        };
    }
}

@Deprecated注釈がない場合は、以前と同様に続行します。存在する場合Statementは、テストを効果的にスキップする空の値を返します。

クラスをテストするには、ルールを宣言する必要があります。

@Rule
public final SkipDeprecated sd = new SkipDeprecated();

Mike Reedellからの例を少し変更しました。

Mike が指摘しているように、テストは合格としてマークされているため、これは完全ではありません。これは非常に古いものですが、ルールでテストをスキップすることに関する問題を非常にうまくまとめています。

編集

少し実験した後、以下はJUnit 4.11で非常にうまく機能するようです

public class SkipDeprecated implements TestRule {

    @Override
    public Statement apply(final Statement stmnt, final Description d) {
        if (d.getAnnotation(Deprecated.class) == null) {
            return stmnt;
        }
        return new Statement() {
            @Override
            public void evaluate() throws Throwable {
                throw new AssumptionViolatedException("Test is deprecated.");
            }
        };
    }
}

これは JUnit のAssumeAPI を活用し、テストに使用されるAssumptionViolatedExceptionからをスローします。これにより、JUnit はこのような状況ではテストが適用されないと判断し、スキップされたと報告します。Statement@Deprecated

于 2013-11-07T08:42:26.340 に答える