gpt4 book ai didi

java - 我需要指定启用 = false 的已弃用测试?

转载 作者:搜寻专家 更新时间:2023-11-01 02:10:24 25 4
gpt4 key购买 nike

我正在弃用一些方法和包,为了正确弃用,我在 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);

所以,我需要指定 (enabled = false)?ty.

最佳答案

您可以使用 @Ignore注释:

@Deprecated
@Test
@Ignore
public void comprovarEqualsIncorrecteNul()

Junit 会告诉你它已经跳过了一个测试:

Tests run: 1, Failures: 0, Errors: 0, Skipped: 1

您还可以在文档的标签中添加注释:

@Ignore("Ignoring deprecated test.")

更一般地说,您可以使用 @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 指出的那样,这并不完美,因为测试被标记为已通过。我又做了一些谷歌搜索,发现了 this , 它很旧但是很好地总结了在规则中跳过测试的问题。

编辑

经过一些实验后,以下内容似乎与 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 的 Assume API 并从用于 @Deprecated 测试的 Statement 中抛出 AssumptionViolatedException。这会导致 JUnit 认为该测试不适用于这些情况并将其报告为已跳过 - 这比在无操作情况下将其报告为通过要好。

关于java - 我需要指定启用 = false 的已弃用测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19831196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com