Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 JUnit:当使用注释测试方法时,测试忽略注释_Java_Junit - Fatal编程技术网

Java JUnit:当使用注释测试方法时,测试忽略注释

Java JUnit:当使用注释测试方法时,测试忽略注释,java,junit,Java,Junit,我有一个很奇怪的问题。这是我的方法 @SomeAnnotation(value = "test") public void doSomethink() { .. } 当我使用我的应用程序时,everythink工作正常(在调试中调用方法doSomethink()时,它也会进入注释中),但当我运行如下测试时 @Test public void testDoSomethink() { service.doSomethink(); } 我的测试完全忽略注释,直接进入doSome

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

@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();
}

“忽略”的意思是,当运行整个测试时,它只是绕过注释,就像它不在那里一样

注释不是执行的代码,而是需要注释处理器处理的元信息

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


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

您所说的“忽略注释”是什么意思?注释仅仅是元数据,它们不能修改代码本身的行为。这个注释到底是什么,它属于哪个库?更新的问题,谢谢反馈