`
soundworld
  • 浏览: 27543 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jmockit: 使用注解自动初始化并注入测试类

阅读更多
   @Tested SomeAction action;
   @Injectable SomeService service;
   @Injectable SomeManager manager;

通常来讲一个测试中应该只会测试唯一的一个类的行为,Jmockit可以帮助程序员自动的初始化被测试类实例,并且可以灵活的为该实例注入其他依赖属性(mocked),注解@Tested提供了这样的功能。

如果要这样做,那么被测试类实例在测试类中不能被final修饰。在每一个测试方法执行前被测试类会被自动创建并注入属性。

参考样例代码,如果在测试方法执行时action还是null,那么Jmockit会尝试使用该类的构造来创建实例,并且进行属性注入(如果可以的话)。反之,如果action在测试执行时不是null,那么就什么都不会发生了。

应用注解@Injectable来标注那些要注入到action中的实例,其他注解(@Mocked,@NonStrict)修饰的变量并不会被用来做注入。另外,基本类型或是数组都可以是被该注解修饰并用来注入,但是这种变量必需在注入前被赋值,否则它们会被赋予默认值。

被注入的属性不能够是final的。

如果一个类中有多个同类型的属性,那么属性名字会用来作为匹配。

初学,记录一下。以前用都是自己显式给被测试变量设置属性,代码重复量很高,这个很好用~。


分享到:
评论

相关推荐

    Android通过注解初始化View 工具类

    创建一个工具类,如`AnnotationInjector`,它会遍历目标类的所有字段,查找带有`BindView`注解的成员,并执行初始化操作。这个工具类通常需要反射来获取类的字段信息,并调用`setAccessible(true)`允许访问私有字段...

    Spring与IoC系列四:基于注解的依赖注入.rar

    6. `@PostConstruct` 和 `@PreDestroy`:这两个注解标记的方法会在Bean初始化后和销毁前执行,分别用于Bean的初始化逻辑和清理工作。 基于注解的DI还需要开启注解扫描。在Spring配置文件中,我们需要添加`@...

    day38 17-Spring的Bean的属性注入:注解方式

    2. **@Autowired**:此注解用于自动匹配并注入Bean的依赖。Spring会根据类型或名称(如果提供)找到合适的Bean进行注入。默认是按类型匹配,如果存在多个相同类型的Bean,可以通过`@Qualifier`注解指定名称。 3. **...

    使用反射和注解模拟Spring的依赖注入

    Spring框架广泛使用注解进行组件扫描和依赖注入,比如`@Component`用于标记一个类作为Spring管理的bean,`@Autowired`则用于自动装配依赖。 模拟Spring的依赖注入,我们可以创建一个简单的容器类,它使用反射来扫描...

    在springboot中使用注解将值注入参数的操作

    在本例中,我们定义了一个名为 InfoResolver 的注解处理类,该类使用自定义的注解 @InfoAnnotation 并将值注入参数。 ```java public class InfoResolver implements HandlerMethodArgumentResolver { @Override ...

    SpringBoot项目启动时实现调用一次初始化方法.docx

    通过以上介绍,我们可以根据项目的需求选择合适的初始化方式,`@PostConstruct`适合简单的初始化,`CommandLineRunner`适合多个初始化步骤并控制执行顺序,而启动类中的初始化方法则更灵活,但应避免过度使用。...

    详解Spring 中如何控制2个bean中的初始化顺序

    例如,可以使用 Spring 的 @Order 注解来指定 bean 的初始化顺序,也可以使用 Spring 的生命周期接口(如 InitializingBean)来控制 bean 的初始化顺序。 总结 控制 2 个 bean 的初始化顺序是一个常见的问题,本篇...

    android注解初始化控件还有点击事件

    通过注解,我们可以将初始化过程自动化。一种常见的做法是使用Butter Knife库,它允许我们用注解来绑定视图和生命周期方法。 例如,我们可以这样使用Butter Knife: ```java import butterknife.BindView; import ...

    Spring依赖注入——java项目中使用spring注解方式进行注入.rar

    - 使用`@Autowired`时,尽量避免在构造函数中,因为这可能会导致初始化顺序问题,推荐在setter方法或无参构造函数后使用。 五、总结 Spring框架的注解式依赖注入大大简化了Java项目的开发,使得组件间的依赖关系...

    模拟Spring的IoC容器实现注解自动装配

    - **初始化**:加载bean定义,这可能涉及读取XML配置文件、Java配置类或扫描指定的包寻找带有特定注解的类。 - **bean创建**:根据bean定义创建bean实例,处理工厂方法、构造器等。 - **依赖注入**:在bean实例化后...

    spring注解注入示例详解.pdf

    当Spring容器启动时,它会自动查找并注入匹配的Bean。 @Autowired的默认注入方式是按类型(byType)。如果Spring上下文中存在多个相同类型的Bean时,注入会失败,并抛出异常。如果需要在存在多个匹配的Bean时指定...

    Android通过注解初始化View

    在"Android通过注解初始化View"的场景下,我们将探讨如何使用注解来优雅地管理UI组件的初始化过程,从而减少传统findViewById方法的使用。 首先,让我们了解注解的基本概念。在Java中,注解是以`@`符号开头的特殊...

    使用注解自动装配需要组件扫描.zip

    在Spring框架中,注解自动装配(Annotation-based Autowiring)是一种简化依赖注入(Dependency Injection,简称DI)的方式,它允许开发者用注解来声明类的依赖,而无需使用XML配置文件。本教程将深入讲解如何使用...

    通过反射获取注解的属性值(源代码)

    1.3 测试类 1.4 测试结果 2、获取属性变量上注解的值 2.1 定义注解类 2.2 定义使用注解的类 2.3 定义测试类 2.4 测试结果 3、获取方法上注解的值 3.1 定义注解类 3.2 定义使用注解的类 3.3 测试类 3.4 测试效果 4、 ...

    Spring Bean创建初始化流程.docx

    最后,`initializeBean(beanName, exposedObject, mbd)`对创建好的Bean进行初始化,包括调用初始化方法(如果有`@PostConstruct`注解的方法),以及执行AOP代理等操作。 整个流程中,Spring不仅创建了Bean,还管理...

    jmockit jmockit jmockit jmockit

    5. **动态代理(Dynamic Proxy)**:JMockit使用Java的动态代理技术来实现模拟和验证,这使得它可以模拟静态方法和final类,这是许多其他模拟框架无法做到的。 6. **兼容性**:JMockit与JUnit、TestNG等流行的测试...

    一 基于 注解 的方式 初始化 spring 容器

    本文将深入讲解如何使用基于注解的方式初始化Spring容器,让Spring自动管理类的实例化和依赖注入。 首先,我们来看`MessageService`类,它只是一个简单的服务类,提供了打印消息的方法。在没有使用Spring的情况下,...

    jmockit-1.6.zip

    3. 使用`@RunWith(Mockit.class)`注解标记测试类,以启动JMockit的测试运行器。 4. 定义模拟对象,使用`@Mocked`注解标识。 5. 在测试方法中,使用`new MockUp()`创建模拟上下文,并定义模拟行为。 6. 运行测试方法...

    (转)Spring 3.0 注解注入详解

    在Spring 3.0中,注解注入还支持了构造器注入,通过在构造函数参数上使用`@Autowired`,Spring会在实例化bean时调用相应的构造函数并注入对应的依赖。 为了更深入地学习Spring 3.0的注解注入,你可以阅读提供的文档...

    Android使用自定义注释来初始化控件

    这个处理器将在编译期间运行,遍历所有包含`@BindView`注解的字段,并自动进行初始化: ```java @AutoService(Processor.class) public class BindViewProcessor extends AbstractProcessor { // 实现方法,处理...

Global site tag (gtag.js) - Google Analytics