英文:
Spring boot override application properties in test
问题
如果我有一个名为 appplication.properties
的文件,内容如下:
url=someUrl
user=userOne
password=ABCD
但是如果我想在测试时将密码设置为其他值,比如:
password=someTest
我该如何做呢?
我需要在一个测试方法中完成以下操作:
@Test
void checkSomething{
// 在调用 someMethod 之前仅针对此测试修改/覆盖密码
someMethod();
}
英文:
If I have a appplication.properties
like:
url=someUrl
user=userOne
password=ABCD
But if I want to be able to set the password when testing to something else, lets say:
password=someTest
How do I do that?
I need to do this in one test
@Test
void checkSomething{
//change/override password before calling someMethod only for this test
someMethod();
}
答案1
得分: 1
你可以创建一个类似于 application-testing.properties
的测试配置文件,并在其中指定要覆盖的属性。
在运行应用程序时,您可以使用以下命令来指定使用的配置文件:
-Dspring.active.profiles=testing
英文:
You can create a testing profile file something like application-testing.properties
and specify the overridden properties there.
Now while running the application you can specify use profile using
-Dspring.active.profiles=testing
答案2
得分: 1
在src/test/resources目录下创建另一个application.properties文件,这是您所需的全部内容。
如果您想在一个方法中获取属性而不涉及Spring,可以这样做:
InputStream input = Main.class.getResourceAsStream(yourproperties-path);
Properties prop = System.getProperties();
prop.load(input);
英文:
create another application.properties under src/test/resources thats all you need,
if you want to get properties to use in one method you can do i without involving spring :
InputStream input = Main.class.getResourceAsStream(yourproperties-path);
Properties prop = System.getProperties();
prop.load(input);
答案3
得分: 1
有多种方法。
第一种方法:Spring配置文件
aplication.yaml:
spring.profiles.active=dev
---
spring.profile=dev
url=某个网址
user=用户一
password=ABCD
---
spring.profile=test
password=一些测试密码
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("test")
public class MyTestClass {...}
第二种方法:SpringBootTest属性
@RunWith(SpringRunner.class)
@SpringBootTest(properties = { "password=一些测试密码" })
public class MyTestClass {...}
英文:
There are multiple ways.
1st way: Spring Profile
aplication.yaml:
spring.profiles.active=dev
---
spring.profile=dev
url=someUrl
user=userOne
password=ABCD
---
spring.profile=test
password=someTest
Test class:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("test")
public class MyTestClass {...
2nd way: SpringBootTest Properties
@RunWith(SpringRunner.class)
@SpringBootTest(properties = { "password=someTest" })
public class MyTestClass {...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论