gpt4 book ai didi

c# - 我们可以在 C# 中向 TestInitialize 发送参数吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:12 24 4
gpt4 key购买 nike

我正在使用 CodedUI 进行自动化测试。当我使用两个应用程序时,假设 A 和 B。需要在每个测试用例开始执行时启动 A。所以我把它放在TestInitialize中。所以我从 TestInitialize 调用一个函数并发送参数,即应用程序 A 的位置。但是如果有不同版本的 App a 我想向 TestInitialize 发送一个参数。
我现在的代码是

[TestInitialize()]
public void MyTestInitialize()
{
App_Launch(@"C:\Emulator\App_Version1\Launch_App.exe");
}
有不同的应用程序版本
因此,如果我必须启动 App_Version2,那么我必须更改硬编码参数中的文件夹名称。
如果我想要以下内容怎么办
[TestInitialize()]
public void MyTestInitialize(string Path)
{
App_Launch(@Path);
}
将路径发送到 TestInitialize

最佳答案

您不能将参数添加到标有 TestInitializeAttribute 的方法中。 ,但也有一些替代方案。

  • 如果您有多个针对版本 1 的测试和针对版本 2 的多个测试,那么最好的选择 (imo) 就是简单地创建两个不同的测试类。
  • 你不能使用 [TestInitialize]并在每个测试开始时调用两个私有(private)方法之一,每个方法都启动各自的应用程序。
  • 您可以使用 TestContext 某种意义上的属性(property)。它在执行测试之前自动设置,可以从 TestInitialize 方法访问。其中的信息可能会为您提供足够的信息来决定启动哪个应用程序。不过,我不确定是否有充分的理由选择此选项 1。
  • 如果需要执行全部测试在两个版本上 ,您可以使用 data driven test .这允许您使用不同的输入多次执行单个测试。这也需要 TestContext属性。但是,我个人发现 MSTest 中的数据驱动测试非常糟糕。它需要使用 DataSourceAttribute ,除非您的目标是 Windows 应用商店应用程序。
  • 使用继承。将两个版本需要执行的所有测试放在一个没有 [TestInitialize] 的基类中.仅将测试初始化​​放在两个继承的类中。不要用 TestClassAttribute 标记基类最好是 abstract所以测试也不会在没有任何形式的初始化的情况下运行。

  • 这完全取决于情况,真的。如果你觉得你真的需要选项 4 并且你的目标不是 Windows 应用商店,我会认真考虑 NUnit,它提供了更灵活的参数化测试。

    关于c# - 我们可以在 C# 中向 TestInitialize 发送参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29138479/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com