Spring Data - MongoDB - JUnit 测试

2024-02-06

我有一个关于 Spring Data - MongoDB 和 JUnit 测试的问题。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = { UserRepository.class, User.class })
public class MyJUnitTest {

用户存储库如下所示:

@Repository
public interface UserRepository extends MongoRepository<User, String> {
    User findByUsername(final String username);
}

我收到以下异常:

无法实例化 [....repository.UserRepository]:指定的类是一个接口

我现在的问题是,如何做到这一点,尽管没有实现类,但 UserRepository 是实例化的,因为 Spring Data 自己实现了?如果我不使用 @Repository 标记 USerRepository,Spring 不会创建 bean 对象

[EDIT]

我已经尝试过您发布的链接示例,如果我通过 main- 方法运行应用程序,它可以正常工作。 然后我尝试实现一个测试类,但在这种情况下我得到了相同的异常:

创建名称为“hello.test.TestClass”的 bean 时出错:自动装配依赖项注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException: 无法自动装配字段: private hello.CustomerRepository hello.test.TestClass.repository;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有找到依赖项 [hello.CustomerRepository] ​​类型的合格 bean:预计至少有 1 个有资格作为此依赖项的自动装配候选者的 bean。依赖注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我的测试类在 src/test/java/hello/test 中如下所示(hello.test 是包):

@ComponentScan("hello")
@EnableMongoRepositories(basePackages = "hello")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = { CustomerRepository.class,     Customer.class })
public class TestClass {

@Autowired
private CustomerRepository repository;

@Test
public void testMethod() {
    System.out.println("repositoryd: " + repository);
    }
}

我的 CustomerRepository 看起来像这样(带有 @Configuration 注释):

@Configuration
public interface CustomerRepository extends MongoRepository<Customer, String> {

public Customer findByFirstName(String firstName);

public List<Customer> findByLastName(String lastName);

}

实际上,我不知道需要哪些注释才能运行测试 - 也许您会有另一个建议,以便我可以解决这个问题。


对于春季启动1.5.8.RELEASE

您可以使用@SpringBootTest引导所有 spring 配置。

你的测试看起来像

@RunWith(SpringRunner.class)
@SpringBootTest
public class SomeRepositoryTests {

    @Autowired
    private SomeRepository someRepository;

    @Test
    public void someTest() {
        someRepository.someMethod(...);
        // assertions
    }
}

当然你想使用嵌入式 mongodb 进行测试所以添加

for Maven

<dependency>
  <groupId>de.flapdoodle.embed</groupId>
  <artifactId>de.flapdoodle.embed.mongo</artifactId>
  <scope>test</scope>
</dependency>

for Gradle

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

Spring Data - MongoDB - JUnit 测试 的相关文章

随机推荐

  • BPEL 中的 Restful Web 服务调用

    我的问题是 有没有什么方法可以让我在 BPEL 中使用 Google Map 或 Youtube 等静态 Web 服务 我知道 BPEL 可与具有 WSDL 文件的 SOAP Web 服务配合使用 但是 我要求做一个项目 其中应包含与 BP
  • Django 存储网站内容

    我对网络开发有点陌生 并且无法理解网站内容的存储方式 即使在查看了开源项目之后 我仍然感到困惑 假设我有一个包含多个段落的网页 我希望最终能够通过 Django 管理页面进行编辑 现在 我已经为页面设置了视图 但我不确定模型应该如何构建 到
  • 如何使用 CloudKit.js 查询 nil 值?

    使用 CloudKit js 如何构建匹配字段为零的项目的查询 我尝试过的每个排列都会失败 要么它明显匹配字符串值 即 null 或 nil 要么如果我实际上尝试传递 null 它会抛出错误 有任何想法吗 以下均无效 filterBy fi
  • 异步加载 iframe

    我有一个网页指向另一个网站 我不希望这阻止页面其余部分的加载 有没有办法异步加载它 使用 jQuery 可以实现以下效果 where url是一些网址
  • Windows 10 - 自定义协议在通过其他方法工作时从 JavaScript 调用时失败

    我成功地在注册表中定义了一个自定义协议 名为FDMyAlbsIF 该协议旨在调用批处理文件 根据接收到的参数执行不同的操作 我现在面临两个问题 通过 Windows 资源管理器调用协议时 即在路径字段中输入字符串FDMyAlbsIF AAA
  • 如何提高从 2 个表中进行选择的 SQL 查询的性能

    请帮我 如何加快这个sql查询 SELECT pa FROM ParametrickeVyhladavanie pa SELECT p FROM produkty p WHERE p KATEGORIA IN categoryArray p
  • ASP.NET Core 2.1根据DB中的数据在布局中插入CSS

    我有一个正在努力解决的问题 一些背景 用户可以在我的应用程序中选择应用程序使用哪种配色方案 此选择存储在数据库中 我想做的是基于这个选择 在页面加载时 为用户所做的选择提供 CSS 文件 我一直在尝试做的是通过在 Layout cshtml
  • spring cloud aws多个sqs监听器

    我的项目中有2个sqs监听器 我希望其中之一具有相同的设置 而其中之一具有不同的设置 我想要更改的唯一值是 maxNumberOfMessages 最实用的方法是什么 我想为其中一个侦听器设置不同的 maxNumberOfMessages
  • ViewPager 内的 ListFragments

    我正在写我的第一个基于片段的应用程序并遇到了一些我无法使用 API 或 Stackoverflow 解决的严重问题 我正在使用一个浏览器在两个列表之间滑动 每个列表都有一个header按钮创建一个新的列表元素 类似于本机 Android 闹
  • 如何在页面加载时显示ajax加载gif动画?

    我尝试在我的网站中实现 AJAX 当单击 divchangepass 的内容时 它应该加载changepass template php 这是我为此使用的代码 function changepass click function block
  • 单元测试核心数据 - 异常退出,代码为 134

    我正在为我的核心数据应用程序设置单元测试 我在一个非常简单的测试中遇到了一个奇怪的问题 我收到的错误是 Developer Tools RunPlatformUnitTests include 451 0 Test rig Develope
  • asyncio create_task 永远运行

    我有以下代码 import asyncio loop asyncio get event loop async def while loop n 0 while True print f n await asyncio sleep 2 n
  • “角度未定义”的原因是什么

    我正在关注以下视频教程蛋头io http www egghead io 但在尝试效仿他创建工厂时的榜样 参见视频 我不断收到 角度未定义 参考错误 但我已经包含了角度脚本 这是我的 html 页面 div div div div
  • 如何使用 jackson 遍历生成的 json 模式并将自定义属性放入 json 模式

    type object properties name type string id type string i type integer p type object properties name type string id type
  • gnu screen:可以在最后调用的程序之后自动命名窗口吗?

    有没有办法自动让每个窗口将其名称更改为您从该窗口运行的最后一个程序的名称 这比手动重命名窗口更方便 是的 您可以使用 shelltitle 来执行此操作 假设您使用 bash 以下内容应该可以工作 将其添加到您的 screenrc shel
  • “英雄单位”是什么意思?

    英雄 一词是什么意思 为什么用它来命名网站 页面的 主要信息 具体来说 我想知道术语 英雄 或短语 英雄单位 是否是网页设计中使用的一些常见术语 但我却忽略了 英雄 一词是电影 电视道具设计师使用的 英雄道具 是为特写镜头而设计的道具 它有
  • 在 Mac 上未收到自定义记录区域的 CloudKit 推送通知

    我已设置自定义区域订阅以接收来自自定义记录区域的 静默 推送通知 我的 iOS 设备上一切正常 但我无法在 Mac 上接收通知 要注册通知 我正在注册通知类型applicationDidFinishLaunching NSApplicati
  • 我在我的博客页面上收到有关时区设置的警告[重复]

    这个问题在这里已经有答案了 正在显示PHP 日期选择器 http www triconsole com php calendar datepicker php在我的博客页面上使用简码 但低于警告 Warning date function
  • crypto.randomBytes 熵源耗尽

    我尝试使用以下命令生成大量 gt 1GB 伪随机数据crypto randomBytes 方法 但我无法为耗尽的熵源生成异常 以查看在出现这种可能的异常时我的应用程序的行为是什么 来自 Node JS 文档 注意 如果没有足够的数量 将抛出
  • Spring Data - MongoDB - JUnit 测试

    我有一个关于 Spring Data MongoDB 和 JUnit 测试的问题 RunWith SpringJUnit4ClassRunner class SpringApplicationConfiguration classes Us