From 32647a1acf55c24cb9f86707cb01a063e1ae6dcf Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Tue, 1 Apr 2025 12:00:43 +0800 Subject: [PATCH] Improve BeanFactoryExtensionsTests Comparing to Java's `BeanFactory.getBean(Class requiredType)`, Kotlin's `BeanFactory.getBean()` supports generic type as `T`, this commit add test to cover that and add assertions. Signed-off-by: Yanming Zhou --- .../beans/factory/BeanFactoryExtensionsTests.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/spring-beans/src/test/kotlin/org/springframework/beans/factory/BeanFactoryExtensionsTests.kt b/spring-beans/src/test/kotlin/org/springframework/beans/factory/BeanFactoryExtensionsTests.kt index 6bb5b3936338..1d954d6fb9db 100644 --- a/spring-beans/src/test/kotlin/org/springframework/beans/factory/BeanFactoryExtensionsTests.kt +++ b/spring-beans/src/test/kotlin/org/springframework/beans/factory/BeanFactoryExtensionsTests.kt @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.springframework.beans.factory import io.mockk.every import io.mockk.mockk import io.mockk.verify +import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.springframework.core.ResolvableType @@ -26,6 +27,7 @@ import org.springframework.core.ResolvableType * Mock object based tests for BeanFactory Kotlin extensions. * * @author Sebastien Deleuze + * @author Yanming Zhou */ class BeanFactoryExtensionsTests { @@ -35,10 +37,18 @@ class BeanFactoryExtensionsTests { fun `getBean with reified type parameters`() { val foo = Foo() every { bf.getBeanProvider(ofType()).getObject() } returns foo - bf.getBean() + assertThat(bf.getBean()).isSameAs(foo) verify { bf.getBeanProvider>(ofType()).getObject() } } + @Test + fun `getBean with reified generic type parameters`() { + val foo = listOf(Foo()) + every { bf.getBeanProvider>(ofType()).getObject() } returns foo + assertThat(bf.getBean>()).isSameAs(foo) + verify { bf.getBeanProvider>>(ofType()).getObject() } + } + @Test fun `getBean with String and reified type parameters`() { val name = "foo" @@ -52,7 +62,7 @@ class BeanFactoryExtensionsTests { val arg2 = "arg2" val bar = Bar(arg1, arg2) every { bf.getBeanProvider(ofType()).getObject(arg1, arg2) } returns bar - bf.getBean(arg1, arg2) + assertThat(bf.getBean(arg1, arg2)).isSameAs(bar) verify { bf.getBeanProvider(ofType()).getObject(arg1, arg2) } }