GVKun编程网logo

使用System.getProperty()获取@CucumberOptions标记属性(获取system的执行结果)

18

对于想了解使用System.getProperty的读者,本文将提供新的信息,我们将详细介绍获取@CucumberOptions标记属性,并且为您提供关于JavaCucumber:从外部源获取@Cuc

对于想了解使用System.getProperty的读者,本文将提供新的信息,我们将详细介绍获取@CucumberOptions标记属性,并且为您提供关于Java Cucumber:从外部源获取@CucumberOptions,如属性文件、Java system.getproperty获取环境属性、Java中使用System类的getProperty()方法获取系统属性的默认值、Java中系统属性Properties介绍 System.getProperty()参数大全的有价值信息。

本文目录一览:

使用System.getProperty()获取@CucumberOptions标记属性(获取system的执行结果)

使用System.getProperty()获取@CucumberOptions标记属性(获取system的执行结果)

我正在Eclipse中运行一个Maven项目以进行Cucumber测试。我的测试运行器类如下所示:

@RunWith(Cucumber.class)@CucumberOptions(        tags = { "@Now" },      //      tags = { "@Ready" },//      tags = { "@Draft" },        features = { "src/test/java/com/myCompany/FaultReporting/Features" },        glue = { "com.myCompany.myApp.StepDefinitions" }        )public class RunnerTest {   }

不必将标签硬编码到测试运行器中,我渴望使用.command文件将它们传递给他们。(即使用System.getProperty(“
cucumber.tag”))

但是,将代码行添加到上述测试运行器时出现错误:

@RunWith(Cucumber.class)@CucumberOptions(        tags = { System.getProperty("cucumber.tag") }//      tags = { "@Now" },      //      tags = { "@Ready" },//      tags = { "@Draft" },        features = { "src/test/java/com/myCompany/FaultReporting/Features" },        glue = { "com.myCompany.myApp.StepDefinitions" }        )public class RunnerTest {   }

我得到的错误是:“注释属性CucumberOptions.tags的值必须是一个常量表达式”。

因此,似乎只希望使用常量而不是参数化的值。有人知道解决这个问题的聪明方法吗?

答案1

小编典典

您可以使用cucumber.options环境变量在运行时指定标签

mvn -D"cucumber.options=--tags @Other,@Now" test

这将取代测试代码中已包含的标签。

Java Cucumber:从外部源获取@CucumberOptions,如属性文件

Java Cucumber:从外部源获取@CucumberOptions,如属性文件

是否可以从 java .properties文件中获取黄瓜选项值?

在this SO帖子中,它显示它是从CLI传递的.

这是我的示例类:

@RunWith(Cucumber.class)
@CucumberOptions(
        features = {"resources/features/"},glue = {"classpath:com/"},tags = {"@foo,@bar"}
)
public class UITestRunner {

}

我没有在这里对代码进行硬编码,而是想从属性文件中获取它.
任何帮助表示赞赏!

解决方法

Cucumber最初会查找由cucumber.api.cli.Main或@CucumberOptions提供的参数

但你可以覆盖它们(按照这个特定的顺序):

> OS环境变量CUCUMBER_OPTIONS
> Java系统属性cucumber.options
>具有cucumber.options属性的Java资源包cucumber.properties

一旦找到上述选项之一,就会使用它.覆盖在名为cucumber.options或CUCUMBER_OPTIONS的变量(或属性)中提供.除插件参数外的所有值都将覆盖由cucumber.api.cli.Main或@CucumberOptions提供的值.插件选项将添加到cucumber.api.cli.Main或@CucumberOptions指定的插件中.

Java system.getproperty获取环境属性

Java system.getproperty获取环境属性

序号 属性 说明
1 java.version Java 运行时环境版本
2 java.vendor Java 运行时环境供应商
3 java.vendor.url Java 供应商的 URL
4 java.home Java 安装目录
5 java.vm.specification.version Java 虚拟机规范版本
6 java.vm.specification.vendor Java 虚拟机规范供应商
7 java.vm.specification.name Java 虚拟机规范名称
8 java.vm.version Java 虚拟机实现版本
9 java.vm.vendor Java 虚拟机实现供应商
10 java.vm.name Java 虚拟机实现名称
11 java.specification.version Java 运行时环境规范版本
12 java.specification.vendor Java 运行时环境规范供应商
13 java.specification.name Java 运行时环境规范名称
14 java.class.version Java 类格式版本号
15 java.class.path Java 类路径
16 java.library.path 加载库时搜索的路径列表
17 java.io.tmpdir 默认的临时文件路径
18 java.compiler 要使用的 JIT 编译器的名称
19 java.ext.dirs 一个或多个扩展目录的路径
20 os.name 操作系统的名称
21 os.arch 操作系统的架构
22 os.version 操作系统的版本
23 file.separator 文件分隔符(在 UNIX 系统中是“/”)
24 path.separator 路径分隔符(在 UNIX 系统中是“:”)
25 line.separator 行分隔符(在 UNIX 系统中是“/n”)
26 user.name 用户的账户名称
27 user.home 用户的主目录
28 user.dir 用户的当前工作目录

Java中使用System类的getProperty()方法获取系统属性的默认值

Java中使用System类的getProperty()方法获取系统属性的默认值

java中使用system类的getproperty()方法获取系统属性的默认值

System类是Java中提供的一个与系统相关的类,可以用于与系统交互,获取系统的一些信息。其中,getProperty()方法可以用来获取系统属性的默认值。

在Java中,每个系统属性都有一个默认值。例如,我们可以使用System.getProperty()方法获取Java的默认路径,即通过System.getProperty("java.home")来获取。

下面是一个代码示例,演示了如何使用System类的getProperty()方法获取系统属性的默认值:

public class SystemDemo {
    public static void main(String[] args) {
        // 获取Java的默认路径
        String javaHome = System.getProperty("java.home");
        System.out.println("Java的默认路径:" + javaHome);

        // 获取操作系统的名称
        String osName = System.getProperty("os.name");
        System.out.println("操作系统的名称:" + osName);

        // 获取用户的账户名称
        String userName = System.getProperty("user.name");
        System.out.println("用户的账户名称:" + userName);
        
        // 获取用户的当前工作目录
        String userDir = System.getProperty("user.dir");
        System.out.println("用户的当前工作目录:" + userDir);
    }
}
登录后复制

运行以上代码,可以得到如下输出结果:

立即学习“Java免费学习笔记(深入)”;

Java的默认路径:C:Program FilesJavajdk1.8.0_191jre
操作系统的名称:Windows 10
用户的账户名称:Administrator
用户的当前工作目录:C:UsersAdministratorworkspace
登录后复制

通过以上代码示例,我们可以看到通过System.getProperty()方法可以方便地获取系统属性的默认值。在实际开发中,可以根据需要使用这些系统属性,例如,根据用户的当前工作目录来进行文件操作,或者根据操作系统的名称来执行不同的代码逻辑。

需要注意的是,系统属性的默认值是由Java运行时环境在启动时从操作系统中获取并设置的。因此,不同的操作系统和Java版本可能会有不同的系统属性默认值。

总结:
本文介绍了Java中使用System类的getProperty()方法来获取系统属性的默认值的方法,并给出了代码示例。通过使用这个方法,我们可以方便地获取系统的一些信息,做到更好地与系统交互和适配不同的环境。在实际开发中,根据需要使用系统属性的默认值,可以帮助我们编写更具有灵活性和兼容性的代码。

以上就是Java中使用System类的getProperty()方法获取系统属性的默认值的详细内容,更多请关注php中文网其它相关文章!

Java中系统属性Properties介绍 System.getProperty()参数大全

Java中系统属性Properties介绍 System.getProperty()参数大全

在JDK文档中System类中有这样的方法getProperties()在此方法的详细介绍中有下面的参数可供使用:

java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name Java 虚拟机实现名称
java.specification.version Java 运行时环境规范版本
java.specification.vendor Java 运行时环境规范供应商
java.specification.name Java 运行时环境规范名称
java.class.version Java 类格式版本号
java.class.path Java 类路径
java.library.path 加载库时搜索的路径列表
java.io.tmpdir 默认的临时文件路径
java.compiler 要使用的 JIT 编译器的名称
java.ext.dirs 一个或多个扩展目录的路径
os.name 操作系统的名称
os.arch 操作系统的架构
os.version 操作系统的版本
file.separator 文件分隔符(在 UNIX 系统中是“/”)
path.separator 路径分隔符(在 UNIX 系统中是“:”)
line.separator 行分隔符(在 UNIX 系统中是“/n”)
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录

下面是针对这些参数进行的一个测试,代码如下:
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Properties;
import java.util.Set;
public class MyJavaMain {

	public static void main(String[] args) throws Exception {

		//通过StringBuilder来构建要输出的内容
		StringBuilder sb = new StringBuilder();
		sb.append("Java 运行时环境版本:"+System.getProperty("java.version")+"\n");
		sb.append("Java 运行时环境供应商:"+System.getProperty("java.vendor")+"\n");
		sb.append("Java 供应商的URL:"+System.getProperty("java.vendor.url")+"\n");
		sb.append("Java 安装目录:"+System.getProperty("java.home")+"\n");
		sb.append("Java 虚拟机规范版本:"+System.getProperty("java.vm.specification.version")+"\n");
		sb.append("Java 类格式版本号:"+System.getProperty("java.class.version")+"\n");
		sb.append("Java类路径:"+System.getProperty("java.class.path")+"\n");
		sb.append("加载库时搜索的路径列表:"+System.getProperty("java.library.path")+"\n");
		sb.append("默认的临时文件路径:"+System.getProperty("java.io.tmpdir")+"\n");
		sb.append("要使用的 JIT 编译器的名称:"+System.getProperty("java.compiler")+"\n");
		sb.append("一个或多个扩展目录的路径:"+System.getProperty("java.ext.dirs")+"\n");
		sb.append("操作系统的名称:"+System.getProperty("os.name")+"\n");
		sb.append("操作系统的架构:"+System.getProperty("os.arch")+"\n");
		sb.append("操作系统的版本:"+System.getProperty("os.version")+"\n");
		sb.append("文件分隔符(在 UNIX 系统中是“/”):"+System.getProperty("file.separator")+"\n");
		sb.append("路径分隔符(在 UNIX 系统中是“:”):"+System.getProperty("path.separator")+"\n");
		sb.append("行分隔符(在 UNIX 系统中是“/n”):"+System.getProperty("line.separator")+"\n");
		sb.append("用户的账户名称:"+System.getProperty("user.name")+"\n");
		sb.append("用户的主目录:"+System.getProperty("user.home")+"\n");
		sb.append("用户的当前工作目录:"+System.getProperty("user.dir")+"\n");
	
		//新建一个文件,如果该文件不存在则创建一个
		File file = new File("c:\\t.txt");
		if( !file.exists()){
			file.createNewFile();
		}
		OutputStream ous = new FileOutputStream(file);
	
		//获取系统的属性
		Properties ps = System.getProperties();
		//获得系统属性中的键值
		Set<String> set = ps.stringPropertyNames();
		for(String name: set){
			sb.append(name + " : " +ps.getProperty(name) + "\n");
			System.out.println(name + " : " +ps.getProperty(name) );
		}
		ous.write(sb.toString().getBytes());
		ous.close();

		System.out.println(System.getProperty("os.name"));
		System.out.println(System.getProperty("os.version"));
		System.out.println("Java运行时环境版本:"+System.getProperty("java.version"));
		System.out.println("Java 运行时环境供应商:"+System.getProperty("java.vendor"));
		System.out.println("Java 供应商的URL:"+System.getProperty("java.vendor.url"));
		System.out.println("Java 安装目录:"+System.getProperty("java.home"));
		System.out.println("Java 虚拟机规范版本:"+System.getProperty("java.vm.specification.version"));
		System.out.println("Java 类格式版本号:"+System.getProperty("java.class.version"));
		System.out.println("Java 类路径:"+System.getProperty("java.class.path"));
		System.out.println("加载库时搜索的路径列表:"+System.getProperty("java.library.path"));
		System.out.println("默认的临时文件路径:"+System.getProperty("java.io.tmpdir"));
		System.out.println("要使用的 JIT 编译器的名称:"+System.getProperty("java.compiler"));
		System.out.println("一个或多个扩展目录的路径:"+System.getProperty("java.ext.dirs"));
		System.out.println("操作系统的名称:"+System.getProperty("os.name"));
		System.out.println("操作系统的架构:"+System.getProperty("os.arch"));
		System.out.println("操作系统的版本:"+System.getProperty("os.version"));
		System.out.println("文件分隔符(在 UNIX 系统中是“/”):"+System.getProperty("file.separator"));
		System.out.println("路径分隔符(在 UNIX 系统中是“:”):"+System.getProperty("path.separator"));
		System.out.println("行分隔符(在 UNIX 系统中是“/n”):"+System.getProperty("line.separator"));
		System.out.println("用户的账户名称:"+System.getProperty("user.name"));
		System.out.println("用户的主目录:"+System.getProperty("user.home"));
		System.out.println("用户的当前工作目录: "+System.getProperty("user.dir"));
	
		InetAddress netAddress = getInetAddress();
		System.out.println("host ip:" + getHostIp(netAddress));
		System.out.println("host name:" + getHostName(netAddress));
	}

	/**
	* 获取本地主机
	* @return 
	*/
	public static InetAddress getInetAddress() {
		try {
			return InetAddress.getLocalHost();
		} catch (UnknownHostException e) {
			System.out.println("unknown host!");
		}
		return null;
	} 

	/**
	* 通过InetAddress获取本地Ip
	* @param netAddress
	* @return 
	*/
	public static String getHostIp(InetAddress netAddress) {
		if (null == netAddress) {
			return null;
		}
		String ip = netAddress.getHostAddress();
		return ip;
	}

	/**
	* 通过InetAddress获取本地主机的名字
	* @param netAddress
	* @return 
	*/
	public static String getHostName(InetAddress netAddress) {
		if (null == netAddress) {
			return null;
		}
		String name = netAddress.getHostName();
		return name;
	}
}

然而在Android系统中,却要使用另一种方法才能遍历获得系统的一些属性
Properties ps = System.getProperties();
Set<Entry<Object, Object>> set = ps.entrySet();
for(Entry<Object, Object> ent : set){
	Log.v("ent", "key:" + ent.getKey() + " |value: " + ent.getValue());
}

关于使用System.getProperty获取@CucumberOptions标记属性的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Java Cucumber:从外部源获取@CucumberOptions,如属性文件、Java system.getproperty获取环境属性、Java中使用System类的getProperty()方法获取系统属性的默认值、Java中系统属性Properties介绍 System.getProperty()参数大全的相关信息,请在本站寻找。

本文标签: