2014-07-09 85 views
0

我有一个很奇怪的问题。我的继承人方法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(); 
} 

通过忽略我的意思是,通过测试运行时,它只是旁路注释像它甚至没有出现

+0

“忽略注释”是什么意思?注释只是元数据,它们不能修改代码本身的行为。 – axtavt

+0

这个注解是什么,它属于哪个库? – MaDa

+0

更新的问题,THX反馈 – ojciecmatki

回答

1

注解是不是该被执行的代码,但它是元信息这需要一个注释处理器来处理它。

在Java EE的情况下,例如,注释是由容器处理(例如使用应用服务器),并导致额外做的事情如设置一个交易或做实体和表之间的映射。

所以在你的情况下,你似乎期望Spring使用注释(你在调试应用程序时遇到的)做些什么。运行测试用例时,没有框架或容器在做它,所以你必须模拟或者模拟它,或者使用类似于Arquillian的东西在需要的环境(例如容器)中运行你的测试。

+0

是的,我认为是绝对的youre正确的,感谢您的 – ojciecmatki