在Java中,我可以设置并获取系统属性
System.setProperty("key","value");
String value = System.getProperty("key");
,我猜该属性是在Java进程级别设置的,但是我需要在更高级别上设置的属性,它是运行我开发的某些Java测试的bash进程,我不能使用Java系统属性,因为该值不会在我的测试运行中持续存在。
有没有一种方法可以在bash级别上设置系统属性,以运行子Java进程可以访问的测试。例如,我知道可以使用Java在Linux机器上获取用户名。
String userName = System.getProperty("user.name");
所以我想知道是否存在至少在运行Java测试的Bash级别上设置我自己的属性的高级方法。
修改
基本上我想要一个变量ranAtLeastOneTest
,然后在运行第一个测试后将此变量设置为true
,然后允许其他测试访问此变量,以了解是否至少运行了一个测试。
答案 0 :(得分:0)
只能为自己的进程及其子进程设置环境变量。子进程无法更改环境变量,并且父进程可以看到此更改。
如果要基于已启动的Java进程中发生的事情在bash脚本中进行更改,则有两种方法:
java进程以特定的退出代码退出。例如0(零)表示至少进行了一次测试,而1表示未进行任何测试。 bash脚本可以对退出代码起作用。
bash脚本监视由Java测试编写的输出。 (例如,将Java输出写入文件,然后bash脚本随后检查输出(grep等)。
如果bash脚本以其中一种方式检测到某些特殊情况,则它可以在启动下一个Java进程时更改环境变量或使用另一个-Dxxx=yyy
参数。
答案 1 :(得分:0)
好像我也可以在bash进程中设置环境变量并从Java子进程访问它。