Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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
C# 为自动测试中启动的程序设置CurrentUICulture_C#_Localization_Automated Tests - Fatal编程技术网

C# 为自动测试中启动的程序设置CurrentUICulture

C# 为自动测试中启动的程序设置CurrentUICulture,c#,localization,automated-tests,C#,Localization,Automated Tests,我目前正在为C#(WPF)应用程序的自动化(灰盒)UI测试设置CurrentUICulture。UI测试是在步骤中使用SpecFlow针对测试用例和FlaUI针对UI自动化执行的。因此,这不是关于如何从应用程序内部设置CurrentUICulture,而是从外部设置 不幸的是,我的研究状况让我认为,为我正在启动的C#应用程序设置UI文化几乎是不可能的,但我希望有一个微弱的机会,有人知道实现这一点的方法 我在这里读到了一些答案,其中指出我们可以在PowerShell控制台中设置CurrentUIC

我目前正在为C#(WPF)应用程序的自动化(灰盒)UI测试设置CurrentUICulture。UI测试是在步骤中使用SpecFlow针对测试用例和FlaUI针对UI自动化执行的。因此,这不是关于如何从应用程序内部设置
CurrentUICulture
,而是从外部设置

不幸的是,我的研究状况让我认为,为我正在启动的C#应用程序设置UI文化几乎是不可能的,但我希望有一个微弱的机会,有人知道实现这一点的方法

我在这里读到了一些答案,其中指出我们可以在PowerShell控制台中设置
CurrentUICulture
,语言(或区域设置)将传播到此PowerShell会话启动的内容,但这似乎仅适用于cmdlet,而不适用于从该PowerShell会话启动的应用程序,这可能是有意义的。我确认这适用于通过
Process.Start
启动的应用程序,从另一个应用程序设置了
CurrentUICulture
。由于
FlaUI
似乎也使用
Process.Start
(FlaUI
Application.Launch
使用
ProcessStartInfo
,该对象让我认为它使用了
Process.Start
,但我没有确认这一点),因此我假设行为将是相同的。此外,不可能将区域设置传递给
进程。直接启动

我甚至尝试在调用程序进行测试的程序中设置
Thread.CurrentUICulture
CultureInfo.DefaultThreadCurrentUICulture
,但都没有效果

我知道全局设置Windows UI语言需要重新启动才能使更改生效,这就排除了自动测试的可能性。即使设置另一个用户并以该用户的身份运行该程序似乎也没有帮助。该用户的区域性设置(
CultureInfo.CurrentCulture
)会传递给软件,但语言(
CultureInfo.CurrentUICulture
)不会


CurrentCulture
可以在会话中设置,我可以使用它来确定使用哪种语言,但这感觉像是我想要避免的黑客行为。是否有其他方法来设置程序运行的语言?

是否是“您的”WPF应用程序?为什么不引入一个命令行参数来覆盖区域性?在许多方面都很方便ways@Klamsi当然,我们可以为测试引入一种变通方法,但我们不会测试我们的应用程序在现实世界中是如何调用的,这会使我们的测试变得毫无用处(我们的本地化本身已经被证明,但基于
CurrentUICulture
选择语言是新的,因此需要测试)嗯,因为你不能同时拥有一个包含所有文化的操作系统,你永远无法测试“真实世界”。如果您将“当前文化”设置为依赖于现有参数,我认为您是非常安全的。什么会出错?