问题标签 [micronaut-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
216 浏览

java - Junit 5 功能测试 Micronaut 消息驱动应用程序

我有一个 Rabbit MQ Micronaut 消息驱动应用程序。该应用程序仅包含消费者端,生产者端在另一个 REST API 应用程序上。

现在我只想在消费者端执行 JUnit 5 测试。试图获得测试仅包含 Rabbit MQ 侦听器的消息驱动应用程序的最佳想法

经过一番研究,我发现我们可以Testcontainers用于集成测试,在我的例子中,生产者和接收者在不同的服务器上。所以我需要在测试环境中RabbitClient为每个创建RabbitListener还是有什么方法可以模拟RabbitClient

执行 Micronaut 消息驱动应用程序功能测试的最佳方法是什么?在这个问题中,我在另一个应用程序上有一个生产者。所以我不能注入生产者客户端。如何在 LISTENER 端测试此功能?

0 投票
2 回答
731 浏览

java - Setting Test MongoDBContainer with Junit 5 and Micronaut

Trying to setup Test MongoDBContainer with Junit 5 and micronaut, instead of staring the MongoDB at the random port on a test environment it is using the application.yml configuration.

application.yml

Junit test

On shouldSearchBasedOnTheName method the return value are from the application.yml MongoDB config.

In the test environment, I haven't inserted any value to the MongoDB, but that method has returning the value from the application MongoDB

I think I am missing the configuration for mongoDb, but quite not sure how to setup

Update

Exception

0 投票
0 回答
97 浏览

spock - 嵌入式 ActiveMQ Artemis 的 Micronaut spock 测试问题

我正在尝试使用 Micronaut-jms 将 ActiveMQ Artemis 集成到我的应用程序中。在我开始编写单元测试之前,一切都运行良好。

我面临的问题是,由于我的测试@MicronautTest在我运行测试时被注释,所以整个应用程序都会启动。除了应用程序将寻找 ActiveMQ Artemis 之外,一切都很好,并且由于它已嵌入并且尚未启动,因此应用程序将抛出错误并且测试将失败。

这是一个演示应用程序

如何确保嵌入式 ActiveMQ Artemis 可用于应用程序?

测试本身:

0 投票
0 回答
108 浏览

kotlin - MicronautTest 注释使用 DescribeSpec 跳过测试

我正在尝试使用 @MicronautTest 注释编写测试,以利用 @Requires 注释,以便我可以根据我设置的 MICRONAUT_ENVIRONMENTS 变量运行不同的测试。我正在关注我在这里看到的内容:https ://micronaut-projects.github.io/micronaut-test/latest/guide/#kotest

但是我的测试只是被跳过了。这是测试:

使用以下命令运行(位于名为smokeTest 的源集中):

这是我看到的日志行:

这是我的测试依赖项:

顺便说一句,我确实有这套:

0 投票
0 回答
85 浏览

micronaut - 运行测试时不考虑 Micronaut 测试包

我的代码设置如下:

我正在为SomeService以下内容编写单元测试:

我认为由于我已经模拟了存储库实例,它不会实例化调用 Mongo DB,但是当测试开始时它会实例化与 mongo 的连接,我无法理解为什么会发生这种情况。为什么要实例化与 MongoDB 的连接?

我尝试通过以下方式模拟 Mongo 客户端:

它可以工作,这次没有连接到 Mongo DB,所以出于某种原因,所以在第一种情况下,它正在实例化 Monog 客户端的一个实例,即使我已经模拟了 SomeRepository。

有人可以告诉我,为什么会这样,我怎样才能达到我想要的结果?

编辑:我厌倦了 Micronaut 测试中的包,以限制被扫描的包的范围仅限于我的包,像这样

但即使这样也无济于事,由于某种原因,实例化了与 Mongo DB 的连接,这意味着 Mongo Client 是出于某种原因创建的。

0 投票
0 回答
62 浏览

sqlite - 如何在运行 Micronaut 功能测试时备份和恢复 sqlite db

我的应用程序我正在使用名为“消息”的 sqlite 数据库。为了测试功能,我编写了一个功能测试。测试调用执行以下操作的控制器:

  1. 删除所有现有记录(测试 BeforeEach 方法)
  2. 加载 csv 文件(控制器调用服务的实际功能)
  3. 删除所有记录(测试 AfterEach 方法)

因为它是产品数据库,所以我想在测试运行之前保留实际数据,所以我使用以下代码:

我的 DAO 文件如下所示:

这里 message.db 是产品数据,所以我试图在测试开始之前对其进行备份,并且在所有测试完成后,我将其移动到原始数据库名称。

但是当我尝试这样做时,我收到以下错误:

messages_lookup_db\messages.db:该进程无法访问该文件,因为它正被另一个进程使用。

我什至使用过Thread.sleep,但这个问题仍然存在。

我在这里做错了什么吗?

问候

0 投票
0 回答
35 浏览

micronaut - 如何在 Micronaut for Server 中模拟用于 Server StartupEvent 的客户端接口

我有一个 @Client 带注释的接口,用于在我的应用程序在 OnApplicationEvent(ServerStartupEvent event) 方法中启动时访问特定的 URL 并获取一些数据。问题是当我使用@Micronaut Test 时,它会实例化整个服务器并且我的客户端连接到实际的 Web 服务器。我的代码与此链接中给出的代码非常相似,只是我有一个注入的客户端接口,用于从 URL 访问数据。

理想情况下,我想要的是我可以通过 Mocking 或其他方式来控制客户端返回的内容。问题是当我为我的客户端执行@Mock 时,它的范围仅限于@Test 方法,并且已注入主应用程序类的客户端仍然与Web 服务器联系。

所以,我的问题是如何模拟应用程序启动的客户端接口,以便它返回一些东西。

或者,如果可以建议一些东西来覆盖 OnApplicationEvent 方法,那就太好了。

0 投票
0 回答
34 浏览

ehcache - 如何在 Micronaut 应用程序中第一次而不是第二次调用 Spy 对象以检查其功能?

我正在测试作为注释存在的 Micronaut 中的 @Cacheable 注释。示例可在此链接中找到。此处给出的测试使用超时来测试其功能。但我的实际用例是它连接到数据库。将 Thread.sleep(x second) 放在生产代码中是没有意义的。我想要的是,当我调用我的 Service 方法时,它第一次调用但第二次使用缓存。

因为我实际上想检查真实对象,所以我必须使用间谍。问题是,如何确保下次使用相同参数调用该方法时不会调用该方法,即它使用缓存返回答案。

请帮忙!提前致谢!

0 投票
0 回答
72 浏览

mockito - 如何检查注入服务中是否调用了方法?

我正在编写 Micronaut 测试来测试我的缓存功能。有一个 Service Singleton 类,它具有常规的 @Cacheable、@CacheInvalidate 注释方法。服务类中的方法调用 Repository 类,该类与数据库联系以获取所需的数据。

为了测试缓存,我使用@Inject 和@Spy 注释注入了服务,并为存储库注入了一个@MockBean。我添加了一个存根以使用 Mockito.when(repo.fetch("X")).thenReturn(DB Object) 从存储库 Mock 返回一些虚拟数据。现在,当我打电话给服务时。我可以使用 Mock.verify 检查我的存储库是否第一次被调用。但我也想验证我的服务中的方法是否被调用。我尝试使用 Mockito.verify(Service).method("X") 但它无法说明该对象不是 Mock。

那么,如何验证我的方法是否被调用?接下来,我还想确认当我传入相同的参数时,我的方法没有被调用(因为它会在第一次调用后被缓存)。

0 投票
0 回答
67 浏览

overriding - 如何在 Micronaut 应用程序的测试中从 Run on StartupEvent 覆盖 OnApplicationEvent 方法

我有一个 OnApplicationEvent ,它在服务器启动时执行一些花哨的预定代码。我想要做的是至少为我的一些单元测试禁用/覆盖这个调用。我在 Micronaut 应用程序中工作。

我怎样才能做到这一点?