JUnit:在使用注释测试方法时,test忽略注释

时间:2014-07-09 13:04:01

标签: java junit

我有一个非常奇怪的问题。继承人我的方法

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

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

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

我的测试完全忽略注释并直接进入doSomethink方法。我错过了一些想法吗?我认为这段代码已足够,但如果您需要更多代码,请告诉我。

SomeAnnotation

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

忽略我的意思是,当通过测试时,它只是绕过注释,就像它甚至没有

一样

1 个答案:

答案 0 :(得分:1)

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

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

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