我正在弃用一些方法和包,要正确地弃用我在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);
Run Code Online (Sandbox Code Playgroud)
所以,我需要指定(enabled = false)?TY.
您可以使用@Ignore注释:
@Deprecated
@Test
@Ignore
public void comprovarEqualsIncorrecteNul()
Run Code Online (Sandbox Code Playgroud)
Junit会告诉你它跳过了一个测试:
测试运行:1,失败:0,错误:0,跳过:1
您还可以在标记中添加注释以供记录:
@Ignore("Ignoring deprecated test.")
Run Code Online (Sandbox Code Playgroud)
更一般地,您可以使用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.
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有@Deprecated注释,那么我们就像以前一样继续.如果有一个我们返回一个空Statement,它有效地跳过测试.
在测试类中,您需要声明规则:
@Rule
public final SkipDeprecated sd = new SkipDeprecated();
Run Code Online (Sandbox Code Playgroud)
示例来自Mike Reedell并稍作修改.
正如迈克指出的那样,这并不完美,因为测试被标记为已通过.我做了一些谷歌搜索并遇到了这个,它已经很老了,但总结了在规则中跳过测试的问题.
编辑
经过一些实验后,以下内容似乎与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.");
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
它利用JUnit的AssumeAPI,并抛出一个AssumptionViolatedException从Statement一个用于@Deprecated测试.这导致JUnit认为测试在这些情况下不适用并将其报告为跳过 - 这比在无操作情况下报告为传递更好.
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |