Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
Maven-使用src/test到src/main的静态变量_Maven_Selenium - Fatal编程技术网

Maven-使用src/test到src/main的静态变量

Maven-使用src/test到src/main的静态变量,maven,selenium,Maven,Selenium,一个使用pagefactory的简单登录和注销selenium测试是用TestNG创建的,它在作为“TestNG”测试运行时运行良好。我正在将它迁移到Maven,在不同类之间访问变量时遇到了一些问题 src/main/java ---package:myapp.pages Homepage.java LoginPage.java ---package:utilities CommonUtils.java DatabaseUt

一个使用pagefactory的简单登录和注销selenium测试是用TestNG创建的,它在作为“TestNG”测试运行时运行良好。我正在将它迁移到Maven,在不同类之间访问变量时遇到了一些问题

src/main/java
---package:myapp.pages
         Homepage.java
         LoginPage.java
---package:utilities
         CommonUtils.java
         DatabaseUtils.java

src/test/java
---package:myapp.test
         LoginTest.java (has static variable about test name)
           public static String sTestName = "Regression test - Login/Logout"
在LoginPage.java中使用上述变量时,出现编译错误。我把它当作

public static String sName=myapp.test.LoginTest.sTestName;
编译错误是: [10,22]包myapp.test不存在


如何处理这个错误?非常感谢您的帮助。

src/main
是您的生产代码所在,
src/test
是您的测试代码所在。生产代码将被发送到生产环境,而测试代码则不会。因此,生产代码不应该依赖于测试代码。Maven为您强制执行这一点(您的IDE也会相应地执行)。生产代码永远不应该依赖于只有测试代码才知道的东西。现在,有一些有效的场景,在这些场景中,您希望测试期间的行为与生产代码不同,并且有许多策略可以做到这一点。例如,您可以使用一个属性文件(并且在
src/test/resources
中有一个同名的文件在测试期间“神奇地”覆盖生产文件),或者使用
set
ters仅在测试期间覆盖内容。

src/main
是生产代码的所在地,
src/test
是测试代码所在的位置。生产代码将被发送到生产环境,而测试代码则不会。因此,生产代码不应该依赖于测试代码。Maven为您强制执行这一点(您的IDE也会相应地执行)。生产代码永远不应该依赖于只有测试代码才知道的东西。现在,有一些有效的场景,在这些场景中,您希望测试期间的行为与生产代码不同,并且有许多策略可以做到这一点。例如,您可以使用一个属性文件(并且在
src/test/resources
“神奇地”在测试期间覆盖生产文件),或者使用
set
ters仅在测试期间覆盖内容。

Selenium处理此问题的正确方法是将所有代码移到src/test。。。因为这都是测试代码。对于Selenium来说,正确的处理方法是将所有代码移到src/test。。。因为这都是测试代码。同意所有内容,除了您的注释“…(您的IDE也会这样做)。”我的Eclipse不在乎。问题标记为“maven”,Eclipse和IntelliJ应该在导入maven项目时进行分离。您不应该使用任何其他IDE for Java:)感谢您对测试和主模块的清晰介绍,所以我要么将其全部移动到main中,要么移动到test中,那么从selenium测试的角度来看,src/main/Java将永远不会被使用?AUT是prod还是非prod会有什么区别吗?这一点都不重要,我想
src/test
可以。我说这没关系,假设这是一个Maven模块,里面除了Selenium之外没有其他东西。(如果这些是可重用的Selenium类,比如页面模型,那么它们可能更容易放在
src/main
中,这样它们就可以放在JAR中,并且可以在其他AUT项目中重用。)同意一切,除了您的注释“…(您的IDE也会这样做)。”我的Eclipse不在乎。问题被标记为“maven”,在导入Maven项目时,Eclipse和IntelliJ都应该进行这种分离。您不应该使用任何其他IDE for Java:)感谢您对测试和主模块的清晰介绍,所以我要么将其全部移动到main中,要么移动到test中,那么从selenium测试的角度来看,src/main/Java将永远不会被使用?AUT是prod还是非prod会有什么区别吗?这一点都不重要,我想
src/test
可以。我说这没关系,假设这是一个Maven模块,里面除了Selenium之外没有其他东西。(如果这些是可重用的Selenium类,比如页面模型,那么它们可能更容易位于
src/main
,这样它们就可以在JAR中结束,并可以在其他AUT项目中重用。)