gpt4 book ai didi

java - JUnit 测试中的注释数量不正确

转载 作者:行者123 更新时间:2023-12-01 11:11:21 24 4
gpt4 key购买 nike

我创建了一些自定义注释,用于通过 JUnit 运行的系统测试。

测试,例如看起来像这样:

@TestCaseName("Change History")
public class ChangeHistory extends SystemTestBase
{
@Test
@Risk(1)
public void test()
{
...

我现在正在实现一个测试运行程序,它将报告测试名称、风险和用于文档目的的位置。

public class MyRunner extends BlockJUnit4ClassRunner
{
...
@Override
protected void runChild(final FrameworkMethod method, RunNotifier notifier)
{
...
System.out.println("Class annotations:");
Annotation[] classanno = klass.getAnnotations();
for (Annotation annotation : classanno) {
System.out.println(annotation.annotationType());
}

System.out.println("Method annotations:");
Annotation[] methanno = method.getAnnotations();
for (Annotation annotation : methanno) {
System.out.println(annotation.annotationType());
}

输出为

Class annotations:
Method annotations:
interface org.junit.Test

所以 getAnnotations() 似乎只返回 JUnit 的注释,而不是所有注释。这个没有提到in the documentation of JUnit :

Returns the annotations on this method

返回类型是java.lang.Annotation,这让我相信我可以使用任何注释。我定义了注释,如下 - 我只是使用它,当出现错误时,我让 Eclipse 生成注释:

public @interface Risk {
int value();
}

如何获取测试类和测试方法的所有注解?

最佳答案

您需要将Risk注释的保留策略设置为RUNTIME。否则,该注解将在编译后被丢弃,并且在代码执行过程中不可用。

这应该有效:

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface Risk {
int value();
}

关于java - JUnit 测试中的注释数量不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326387/

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