配置:零代码-tdd.1.3.2
${host}在运行时,使用-D java选项设置系统属性。平安无事。
问题/我需要的:单元测试时的,未设置的系统属性,以及未解决的主机。应用程序使用Junit和Zerocode,只想简单地配置Zerocode来设置系统属性。
示例:
host.properties
web.application.endpoint.host:${host}
web.application.endpoint.port=
web.application.endpoint.context=更多信息:要求只用于配置。无法在IDE中引入新的Java代码或条目。
有什么帮助吗?任何想法都会受到赞赏。
发布于 2019-07-21 11:02:37
此功能可在零代码版本1.3.9及更高版本中使用。请像${SYSTEM.PROP:host}一样使用位置保持器,例如${SYSTEM.PROPERTY:java.vendor}解析为Oracle Corporation或Azul Systems, Inc.
示例链接:https://github.com/authorjapps/zerocode/blob/master/README.md#general-place-holders
发布于 2019-05-23 07:42:33
找到了一个解决方案,但不确定这是否是正确的方法。
步骤1:创建一个配置文件并加载系统属性。
Config.java
public class Config {
public Map<String, Object> readProperties(String optionalString) {
Map<String, Object> propertiesMap = new HashMap<>();
final String host = System.getProperty("host");
propertiesMap.put("host", host);
return propertiesMap;
}
}步骤2:添加一个步骤(在其他步骤之前)以使用.json文件中加载的属性。
test.json
{
"scenarioName": "Test ...",
"steps": [
{
"name": "config",
"url": "com.test.Config",
"operation": "readProperties",
"request": "",
"assertions": {}
}
]
}步骤3:在步骤配置中使用已加载的属性
test.json
{
"scenarioName": "Test ...",
"steps": [
{
"name": "config",
"url": "com.test.Config",
"operation": "readProperties",
"request": "",
"assertions": {}
},
{
"name": "test",
"url": "${$.config.response.host}/test/xxx",
"operation": "GET",
"request": {},
"assertions": {
"status": 200
}
}
]
}就是这样,虽然它是有效的,但我正在寻找更好的方法。
我正在尝试的一些可能的选择是:
再次感谢任何帮助/想法。
发布于 2021-01-07 19:18:16
我的问题是,您为什么要访问实际的主机/端口?很抱歉给你这么长的答案,但请容忍我。我认为有一个更容易的方法来达到你正在尝试的目标。我发现最好用两种方式来考虑零码的用法,
考虑到这一点,这样你就有机会获得两种不同的衡量标准,
那么,除了上面的评估之外,您为什么要构建一个细化测试?这样做的真正价值在于,您仍然像在集成测试中一样,将其贯穿于代码中,但您可以像在标准单元测试中一样控制所述测试的结果。此外,由于您控制了测试的结果,相对于动态api,这可能会提高构建时测试的稳定性。
显然,您似乎已经知道如何设置集成测试了,所以我假设您很适合进行集成测试,但是稀薄集成测试呢?
要设置一个集成测试,您实际上有两个选项,
如果您已经进行了集成测试,您可以将它们复制到一个新文件中并进行更新,或者只转换您现有的测试。
*回答您的具体问题*
在使用WireMock时,可以使用以下方法设置具有动态端口的动态本地服务器url。
protected String urlWithPort;
@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort().dynamicHttpsPort());
protected String getUriWithPort() {
return "http://localhost:" + wireMockRule.port();
}注意:使用WireMock版本2.27.1和ZeroCode 1.3.27测试了上述内容
希望这可以帮助您回答如何动态获取测试的服务器/端口。
https://stackoverflow.com/questions/56252109
复制相似问题