批注接口 SpyBean


已过时, 待删除: 此 API 元素将从以后的版本中删除。
since 3.4.0 for removal in 4.0.0 in favor of MockitoSpyBean
Annotation that can be used to apply Mockito spies to a Spring ApplicationContext. Can be used as a class level annotation or on fields in either @Configuration classes, or test classes that are @RunWith the SpringRunner.

Spies can be applied by type or by bean name. All beans in the context of a matching type (including subclasses) will be wrapped with the spy. If no existing bean is defined a new one will be added. Dependencies that are known to the application context but are not beans (such as those registered directly) will not be found and a spied bean will be added to the context alongside the existing dependency.

When @SpyBean is used on a field, as well as being registered in the application context, the spy will also be injected into the field. Typical usage might be:

 @RunWith(SpringRunner.class)
 public class ExampleTests {

     @SpyBean
     private ExampleService service;

     @Autowired
     private UserOfService userOfService;

     @Test
     public void testUserOfService() {
         String actual = this.userOfService.makeUse();
         assertEquals("Was: Hello", actual);
         verify(this.service).greet();
     }

     @Configuration
     @Import(UserOfService.class) // A @Component injected with ExampleService
     static class Config {
     }


 }
 
If there is more than one bean of the requested type, qualifier metadata must be specified at field level:
 @RunWith(SpringRunner.class)
 public class ExampleTests {

     @SpyBean
     @Qualifier("example")
     private ExampleService service;

     ...
 }
 

This annotation is @Repeatable and may be specified multiple times when working with Java 8 or contained within a @SpyBeans annotation.

从以下版本开始:
1.4.0
作者:
Phillip Webb
另请参阅:
  • 可选元素概要

    可选元素
    修饰符和类型
    可选元素
    说明
    Class<?>[]
    已过时, 待删除: 此 API 元素将从以后的版本中删除。
    The classes to spy.
    已过时, 待删除: 此 API 元素将从以后的版本中删除。
    The name of the bean to spy.
    boolean
    已过时, 待删除: 此 API 元素将从以后的版本中删除。
    Indicates that Mockito methods such as verify(mock) should use the target of AOP advised beans, rather than the proxy itself.
    已过时, 待删除: 此 API 元素将从以后的版本中删除。
    The reset mode to apply to the spied bean.
    Class<?>[]
    已过时, 待删除: 此 API 元素将从以后的版本中删除。
    The classes to spy.
  • 元素详细资料

    • name

      String name
      已过时, 待删除: 此 API 元素将从以后的版本中删除。
      The name of the bean to spy. If not specified the name will either be generated or, if the spy is for an existing bean, the existing name will be used.
      返回:
      the name of the bean
      默认值:
      ""
    • value

      @AliasFor("classes") Class<?>[] value
      已过时, 待删除: 此 API 元素将从以后的版本中删除。
      The classes to spy. This is an alias of classes() which can be used for brevity if no other attributes are defined. See classes() for details.
      返回:
      the classes to spy
      默认值:
      {}
    • classes

      @AliasFor("value") Class<?>[] classes
      已过时, 待删除: 此 API 元素将从以后的版本中删除。
      The classes to spy. Each class specified here will result in a spy being applied. Classes can be omitted when the annotation is used on a field.

      When @SpyBean also defines a name this attribute can only contain a single value.

      If this is the only specified attribute consider using the value alias instead.

      返回:
      the classes to spy
      默认值:
      {}
    • reset

      MockReset reset
      已过时, 待删除: 此 API 元素将从以后的版本中删除。
      The reset mode to apply to the spied bean. The default is MockReset.AFTER meaning that spies are automatically reset after each test method is invoked.
      返回:
      the reset mode
      默认值:
      AFTER
    • proxyTargetAware

      boolean proxyTargetAware
      已过时, 待删除: 此 API 元素将从以后的版本中删除。
      Indicates that Mockito methods such as verify(mock) should use the target of AOP advised beans, rather than the proxy itself. If set to false you may need to use the result of AopTestUtils.getUltimateTargetObject(...) when calling Mockito methods.
      返回:
      true if the target of AOP advised beans is used or false if the proxy is used directly
      默认值:
      true