gpt4 book ai didi

java - JUnit : when testing method with annotation, 测试忽略注释

转载 作者:行者123 更新时间:2023-12-01 12:46:28 25 4
gpt4 key购买 nike

我有一个非常奇怪的问题。这是我的方法

@SomeAnnotation(value = "test")
public void doSomethink() {
..
}

当我使用我的应用程序时,everythink 工作正常(在调试中调用方法 doSomethink() 时,它也会进入注释),但是当我运行如下测试时

@Test
public void testDoSomethink() {
service.doSomethink();
}

我的测试完全忽略注释并直接进入 doSomethink 方法。我是不是想念什么?我认为这段代码已经足够了,但如果您需要更多代码,请告诉我。

一些注释

package org.springframework.security.access.prepost;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface SomeAnnotation{
String value();
}

通过忽略我的意思是,当运行测试时,它只是绕过注释,就像它根本不存在一样

最佳答案

注释不是要执行的代码,而是需要注释处理器对其执行某些操作的元信息。

例如,在 Java EE 中,注释由容器(例如您使用的应用服务器)处理,并导致执行其他操作,例如设置事务或在实体和表之间进行映射。

因此,在您的情况下,您似乎希望 Spring 对注释执行某些操作(您在调试应用程序时会遇到这种情况)。运行测试用例时,没有框架或容器执行此操作,因此您必须模拟或模拟它,或者使用类似 Arquillian 的东西。在所需的环境(例如容器)中运行测试。

关于java - JUnit : when testing method with annotation, 测试忽略注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24654512/

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