Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要指定一个不推荐使用的测试,该测试是enabled=false?_Java_Maven_Testng - Fatal编程技术网

Java 我需要指定一个不推荐使用的测试,该测试是enabled=false?

Java 我需要指定一个不推荐使用的测试,该测试是enabled=false?,java,maven,testng,Java,Maven,Testng,我反对使用一些方法和包,为了正确反对,我在javaDoc(@deprecarted)和注释(@Deprecated)中指定如下内容: */ @Deprecated @Test(groups = {"domini", "models"}) public class AdrecaTest extends ModelsAbstractTest { /** * <pre> * @deprecated * Nova ubicació: * &l

我反对使用一些方法和包,为了正确反对,我在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);
*/
@不赞成
@测试(组={“多米尼”,“模型”})
公共类AdrecaTest扩展了ModelsStractTest
{
/**
* 
*@弃用
*新乌比卡乔:
*{@link cat.base.sca.domini.impl.AdrecaTest#comprovarEqualsIncorrecteNul()}
* 
*马托德等于不正确的价值
*/
@不赞成
@测试**(已启用=错误)**
public void comprovarEqualsIncorrecteNul()
{
IAdreca a;
a=新肾上腺();
a、 塞蒂普萨雷卡(PT_蒂普萨雷卡);
a、 设定值(PT_ID_en);
a、 设置发送器(PT_ID_发送器);
a、 setIdVial(PT_ID_VIAL);
a、 setIdSigles(PT_ID_SIGLES);
所以,我需要指定(enabled=false)? ty.

您可以使用注释:

@Ignore("Ignoring deprecated test.")
Junit将告诉您它跳过了一个测试:

测试运行:1,失败:0,错误:0,跳过:1

您还可以在标记中添加注释以用于文档:

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.
            }
        };
    }
}
更一般地说,您可以使用
@规则
有条件地跳过类中不推荐的测试方法:

@Rule
public final SkipDeprecated sd = new SkipDeprecated();
如果没有
@弃用的
注释,那么我们将一如既往地继续。如果有注释,我们将返回一个空的
语句
,这将有效地跳过测试

在测试类中,您需要声明规则:

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.");
            }
        };
    }
}
示例取自并稍作修改

正如Mike指出的,这并不完美,因为测试被标记为通过。我在谷歌上做了一些搜索,发现它非常古老,但很好地总结了规则中跳过测试的问题

编辑

经过一点实验,以下内容似乎在JUnit4.11中运行得非常好

这利用了JUnit的API,并从
语句中抛出一个
AssumptionViolatedException
,该语句用于
@已弃用的
测试。这会导致JUnit认为该测试在这些情况下不适用,并将其报告为已跳过-这比将其报告为已通过更可取p病例

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.");
            }
        };
    }
}