在使用 Espresso 编写 UI Automation 时,我应该如何处理多个市场?
How should I handle multiple markets while writing UI Automation with Espresso?
我正在使用 Espresso 为 Android 应用编写 UI 自动化测试。该测试将搜索条形码编号并找到关联的项目,但此功能仅适用于美国用户。用户市场由设备语言标识 (en_US、en_UK)。
如何编写此测试,以便每次我 运行 英国的自动化测试时都不会失败?
我通过为 iOS 应用程序创建一个检查设备当前语言的方法来使用 XCTest 完成此操作。
class MarketChecker: XCTestCase {
func isUSLocale() -> Bool {
return Locale.current.identifier == "en_US"
}
func isGBLocale() -> Bool {
return Locale.current.identifier == "en_GB"
}
}
然后在测试开始时调用该方法:
if isUSLocale() {
<US specific test>
}
这使我能够 运行 相同的测试套件,而不会因我们的应用程序区域差异而导致失败。
不幸的是(对我来说)Espresso 不喜欢 if
语句,所以我不确定如何为 Android 应用程序实现它。任何见解将不胜感激!
设法弄明白了。如果您的应用位于由设备语言控制的多个市场,这将非常有用。
public static String deviceLocale() {
return Locale.getDefault().getCountry();
}
public static boolean isGBLocale() {
return deviceLocale().equals("GB");
}
public static boolean isAULocale() {
return deviceLocale().equals("AU");
}
public static boolean isUSLocale() {
return deviceLocale().equals("US");
}
这可用于验证市场特定差异或跳过在该市场中可能会失败的测试。
if (isUSLocale()) {
// US test
}
我正在使用 Espresso 为 Android 应用编写 UI 自动化测试。该测试将搜索条形码编号并找到关联的项目,但此功能仅适用于美国用户。用户市场由设备语言标识 (en_US、en_UK)。
如何编写此测试,以便每次我 运行 英国的自动化测试时都不会失败?
我通过为 iOS 应用程序创建一个检查设备当前语言的方法来使用 XCTest 完成此操作。
class MarketChecker: XCTestCase {
func isUSLocale() -> Bool {
return Locale.current.identifier == "en_US"
}
func isGBLocale() -> Bool {
return Locale.current.identifier == "en_GB"
}
}
然后在测试开始时调用该方法:
if isUSLocale() {
<US specific test>
}
这使我能够 运行 相同的测试套件,而不会因我们的应用程序区域差异而导致失败。
不幸的是(对我来说)Espresso 不喜欢 if
语句,所以我不确定如何为 Android 应用程序实现它。任何见解将不胜感激!
设法弄明白了。如果您的应用位于由设备语言控制的多个市场,这将非常有用。
public static String deviceLocale() {
return Locale.getDefault().getCountry();
}
public static boolean isGBLocale() {
return deviceLocale().equals("GB");
}
public static boolean isAULocale() {
return deviceLocale().equals("AU");
}
public static boolean isUSLocale() {
return deviceLocale().equals("US");
}
这可用于验证市场特定差异或跳过在该市场中可能会失败的测试。
if (isUSLocale()) {
// US test
}