Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧特性测试中加载但未应用的资源_Java_Spring_Kotlin - Fatal编程技术网

Java 弹簧特性测试中加载但未应用的资源

Java 弹簧特性测试中加载但未应用的资源,java,spring,kotlin,Java,Spring,Kotlin,我有一个有线问题,找不到任何提示 我正在使用属性文件进行数据库分片配置。 我有一个类负责加载这些属性: @Component @PropertySources(value = *arrayOf( PropertySource("classpath:/dbconfig/base.properties"), PropertySource("classpath:/dbconfig/override.properties", ignoreResourceNotFound = true)

我有一个有线问题,找不到任何提示

我正在使用属性文件进行数据库分片配置。 我有一个类负责加载这些属性:

@Component
@PropertySources(value = *arrayOf(
    PropertySource("classpath:/dbconfig/base.properties"),
    PropertySource("classpath:/dbconfig/override.properties", ignoreResourceNotFound = true)
))
@ConfigurationProperties("groups.datasource")
class DbConfig {
  val base: List<DataSourceProperties> = ArrayList()
  val override: List<DataSourceProperties> = ArrayList()
}
以及我的src/test/resources/dbconfig/override.properties文件:

#Spring Boot Config for Oracle
# CENTRAL
groups.datasource.base[0].name=central
groups.datasource.base[0].url=jdbc:oracle:thin:@url:1530:sid
groups.datasource.base[0].username=user
groups.datasource.base[0].password=passwd
groups.datasource.base[0].driver=class name=oracle.jdbc.driver.OracleDriver
#Spring Boot Config for Oracle
# PREPROD
groups.base.override[1].name=preprod
groups.base.override[1].url=jdbc:oracle:thin:@user:1542:sid
groups.base.override[1].username=user
groups.base.override[1].password=passwd
groups.base.override[1].driver=class name=oracle.jdbc.driver.OracleDriver
这是我的测试课:

@RunWith(SpringJUnit4ClassRunner::class)
@SpringBootTest(classes = arrayOf(DatabaseComponent::class))
open class DatabaseComponentTest {

  @Autowired
  lateinit var env: Environment

  @Test
  fun testBaseConfiguration() {
    assert(env.getProperty("groups.datasource.base[0].name") == "central")
    assert(env.getProperty("groups.datasource.base[0].url") == "jdbc:oracle:thin:@url:1530:sid")
    assert(env.getProperty("groups.datasource.base[0].username") == "user")
    assert(env.getProperty("groups.datasource.base[0].password") == "passwd")
    assert(env.getProperty("groups.datasource.base[0].driver") == "class name=oracle.jdbc.driver.OracleDriver")
  }

  @Test
  fun testOverrideConfiguration() {
    assert(env.getProperty("groups.datasource.override[0].name") == "preprod")
    assert(env.getProperty("groups.datasource.override[0].url") == "jdbc:oracle:thin:@url:1542:sid")
    assert(env.getProperty("groups.datasource.override[0].username") == "user")
    assert(env.getProperty("groups.datasource.override[0].password") == "passwd")
    assert(env.getProperty("groups.datasource.override[0].driver") == "class name=oracle.jdbc.driver.OracleDriver")
  }

}
在调试模式下,当我查看类加载器时,文件override.properties似乎加载了他的所有值

另外,testBaseConfiguration确实有效,并断言true。 然而,testOverrideConfiguration没有,并且断言false

另一件事,所有这些行为在Spring模块中运行良好,覆盖在这里并加载。我的问题只是针对我的测试用例

知道我做错了什么吗

编辑1:以下是DataBaseComponent:

@Configuration
@EnableAutoConfiguration
@ComponentScan
open class DatabaseComponent

我还将代码放在GitHub上:

这不是因为您在测试中的属性名为groups.base.override而不是groups.datasource.override吗?

试试看

@试验 有趣的testOverrideConfiguration(){ 断言(env.getProperty(“groups.datasource.override[1].name”)==“prepod”) 断言(env.getProperty(“groups.datasource.override[1].url”)==“jdbc:oracle:thin:@url:1542:sid”) 断言(env.getProperty(“groups.datasource.override[1].username”)=“user”) 断言(env.getProperty(“groups.datasource.override[1].password”)=“passwd”) 断言(env.getProperty(“groups.datasource.override[1].driver”)==“类名=oracle.jdbc.driver.OracleDriver”) }


换句话说,在testOverrideConfiguration()中将[0]替换为[1],或者在override.properties中将我们[0]替换为[0]可以共享DatabaseComponent源代码吗?好的,我用代码和github链接编辑了我的帖子是的,谢谢,我以各种方式更改了我的配置,我最终把测试搞砸了。