Spring 与 JUnit 测试和依赖注入不起作用

2024-04-10

我尝试在 Junit 测试用例中使用 Spring 自己的依赖注入:

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import org.binarisinformatik.api.AppConfig;
import org.binarisinformatik.satzrechner.SatzRechner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=AppConfig.class)
//@SpringApplicationConfiguration(classes = {AppConfig.class}) 
public class SatzRechnerTest {

    @Autowired
    private SatzRechner satzRechner;  //SUT

    @Before
    public void setUp() {
    //  AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SatzRechnerTest.class);
        //satzRechner=context.getBean(SatzRechner.class);
    }

    @Test
    public void addiere_satz_4komma6_zu_zahlwert_10() {

        assertThat("Addition von \"4,6\" ergibt nicht 10!",
                satzRechner.summe("4,6"), is(equalTo(10)));
    }

我正在测试类名SatzRechner其中 Spring 还应该自动装配一些变量。这是我正在测试的班级:

@Component
public class SatzRechner {

    @Autowired //@Inject
    private Rechner taschenRechner; 
    @Autowired
    private Zahlenfabrik zahlenfabrik;

    public Integer summe(String zeichenSatz) {
        return taschenRechner.summe(zahlenfabrik.erzeugeZahlen(zeichenSatz));
    }
}

And AppConfig.class用作配置文件的内容如下所示:

@Configuration
@ComponentScan(value={"org.binarisinformatik"})
public class AppConfig {
}

这里有什么问题吗?


如果你想使用Spring配置类,这个配置类必须有bean定义。请在下面找到一个示例:

测试类:

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import org.binarisinformatik.api.AppConfig;
import org.binarisinformatik.satzrechner.SatzRechner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=AppConfig.class)
public class SatzRechnerTest {

    @Autowired
    private SatzRechner satzRechner;

    @Test
    public void addiere_satz_4komma6_zu_zahlwert_10() {

        assertThat("Addition von \"4,6\" ergibt nicht 10!",
                satzRechner.summe("4,6"), is(equalTo(10)));
    }
}

配置类:

您必须声明 @Bean 注解的方法。这些bean 由Spring 容器管理。

@Configuration
public class AppConfig {

    // Beans present here will be injected into the SatzRechnerTest class.

    @Bean
    public SatzRechner satzRechner() {
        return new SatzRechner();
    }

    @Bean
    public Rechner taschenRechner() {
        return new TaschenRechner();
    }

    @Bean
    public Zahlenfabrik zahlenfabrik() {
        return new Zahlenfabrik();
    }
}

注意:我让您在这里正确处理返回的类型和 beans 参数(如果存在于您的上下文中)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 与 JUnit 测试和依赖注入不起作用 的相关文章

  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • 使用 Checkstyle Plugin 时从插件调用代码时出现问题:“org.eclipse.jface”

    我正在尝试在 Rational Software Architect 7 0 0 4 上使用 eclipse cs 插件 我最近卸载了旧的 beta2 版本并安装了 beta3 插件本身按照之前的配置工作 但是每当我尝试通过 Windows
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • jmap - 组织和堆操作会给 jvm 带来开销吗?

    正如标题所述 需要多少开销jmap histo and jmap heap分别带到jvm 如果一个内存敏感的 Java 进程处于OutOfMemory 例如 大约 96 的堆已满 并且无法通过 full gc 清除 其中一项操作是否有可能将
  • 在 AKKA 中,对主管调用 shutdown 是否会停止其监督的所有参与者?

    假设我有一位主管连接了 2 位演员 当我的应用程序关闭时 我想优雅地关闭这些参与者 调用supervisor shutdown 是否会停止所有参与者 还是我仍然需要手动停止我的参与者 gracias 阻止主管 https github co
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 为什么 git 没有 pre-push hook?

    在将更改推送到远程 位于 bitbucket 上 之前 我希望有一个钩子来运行我的测试 我通常会从 master 分支出来 当该功能完成后 我会将其合并回 master 并推送 这就是我寻找预推送钩子的原因 相反 我使用了仅限于主分支的合并
  • 需要帮助在两个套接字之间创建 TCP 中继

    我有以下情况 SomeServer S lt gt C MyApp S lt gt C User S represents a server socket C represents a client socket 本质上 MyApp发起通信
  • 初始化后无法应用 JqueryUI 可调整 AspectRatio?

    我试图在 JQueryUI 可调整大小中动态打开 关闭纵横比 但是即使将选项设置为 false 后 它仍然保持纵横比 以下是我当前正在使用的代码 aspect check click function var ischecked aspec
  • Python setuptools:包目录不存在

    我有一个与此相关的项目setup py file import setuptools with open README md r as fh long description fh read setuptools setup name ve
  • mousemove 事件是否每帧触发一次?

    In this 小提琴演示 https jsfiddle net JoeZheng uy9poL1j 按下并移动鼠标会根据鼠标的位置绘制点 绘制方法是听mousemove回调 但它绘制了离散点 表明mousemove事件不会连续触发 更重要
  • 枚举值的类型[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取表示接口键的类型 interface I a string b string const i keyof I typeof i is a b 有没有办法类似地获取表示枚举值的类型 enum
  • 在 Dart 中实现观察者模式

    我想在 Dart 中实现观察者模式 但我不知道如何去做 假设我有一堂课 class MyClass String observed field 现在 每当我更改字段时 我都想将 observed fieldchanged 字符串打印到控制台
  • UIWebView 到 UIImage

    我尝试使用此方法从 UIWebView 捕获图像 但图像仅包含屏幕的可见区域 如何捕获 UIWebView 的完整内容 包括不可见区域 即整个网页到一张图像中 UIImage captureScreen UIView viewToCaptu
  • undefined 不是一个对象(评估route.routeName)

    when update the expo from 16 0 0 to 24 0 0 and react navigation from git https github com react community react navigati
  • 如何将UIView裁剪为半圆?

    我想将 UIView 裁剪为半圆形 提前致谢 一个方便的方法就是子类 aUIView 在其上添加一个图层 并使视图颜色透明 如果不是默认情况下 import UIKit class SemiCirleView UIView var semi
  • BaseX RESTXQ“你好世界”示例

    我正在努力开始使用基本 REST API 我已下载并安装了最新版本的 Windows 版 BaseX 我通过单击 BaseX 安装添加到 Windows 开始菜单中的 BaseX Server 开始 图标启动了 BaseX Server 看
  • node/express:使用Forever连续运行脚本时设置NODE_ENV

    我怎样才能设置NODE ENV http expressjs com guide html configuration当我使用时变量 参数为 生产 forever https github com indexzero forever启动我的
  • 如何利用 Android 的“清除缓存”按钮

    在 Android 的设置中 在 管理应用程序 活动中 单击应用程序时 数据会分解为应用程序 数据和缓存 还有一个清除缓存的按钮 我的应用程序缓存音频文件 我希望用户能够使用此按钮清除缓存 我如何存储它们 以便它们与缓存集中在一起并且用户可
  • 使用另一个域的用户凭据连接到 SQL Server

    如何使用另一个域中的用户登录名 密码连接到 SQL Server 数据库 如果我使用我的帐户连接到数据库 它工作正常 cnxn pyodbc connect DRIVER SQL Server SERVER server name DATA
  • Netbeans 错误:项目文件夹已存在且不为空

    我安装了Netbeans 因为我正在读这本书 Java in 21 days 我在编程领域完全是个新手 当我尝试在 Netbeans 中打开一个新项目时 出现错误 项目文件夹已存在且不为空 删除 nbproject 文件夹并重新启动 IDE
  • 如何让用户重新排序 UITableView 中的部分

    我正在开发一个包含股票的应用程序 按投资组合排列 所以这很适合表格视图 我正在研究编辑交互 它足够简单 允许用户添加或删除股票 将它们拖动到一个投资组合或另一个投资组合中 但我无法优雅地做的一件事是让用户将一个投资组合拖动到另一个投资组合的
  • 字符串损坏或 preg_match 错误?

    NO BREAK SPACE 和许多其他 UTF 8 符号需要 2 个字节来表示 http www fileformat info info unicode char a0 index htm 因此 在假定的 UTF8 字符串上下文中 非
  • Linux内核中的模块间通信

    我有两个 Linux 内核模块 其中一个可以为另一个提供一些功能 但使用该功能并不是必需的 即使第一个模块不存在 第二个模块也可以 并且应该 工作 如果我只是从第一个模块导出函数并在第二个模块中使用它 则第二个模块依赖于该符号 并且在没有第
  • 我可以在本地主机上使用实际网络环境进行性能测试吗?

    我需要测试在本地主机上运行的应用程序的性能 就像在在线环境中一样 我的意思是通过网络流量模拟 有限带宽模拟或其他参数进行的性能测试 就像在线一样 Apache Ab 可以模拟吗 我们用过Charles http www charlespro
  • Spring 与 JUnit 测试和依赖注入不起作用

    我尝试在 Junit 测试用例中使用 Spring 自己的依赖注入 import static org hamcrest CoreMatchers equalTo import static org hamcrest CoreMatcher