gpt4 book ai didi

wpf - 在 TestComplete 的 UI 测试实例上调用 .Net 函数

转载 作者:行者123 更新时间:2023-12-04 05:57:30 25 4
gpt4 key购买 nike

我有一个简单的 wpf 应用程序,它有一个按钮,可以在单击时增加一个值。我还有一个返回最新值的函数。默认值为 5。我在 testcomplete 中还有一个 UI 测试,点击按钮 3 次(所以是 8 次)。我需要调用 .Net 函数来获取这个值并断言它。下面是我的测试代码。

经过一番搜索,我找到了 CLRbridge 的详细信息并实现了它。但是,正如您在下面看到的,UI 测试实例和我在其上调用该函数的实例是不同的。因此,该函数返回 5。

我的问题是,如何从 testcomplete 加载的同一实例调用该函数。还是我完全走错了路?我用 if..then 尝试了脚本和 UI 测试,但没有任何效果。我已经尝试了直接实例和调用 appdomain,两者似乎都不起作用。

注意:我知道我可以在 UI 控件中显示值并验证控件。但是,我专门针对我们在项目中需要的更复杂的测试功能进行了尝试。

function Test2()
{
var Increment;
Increment = 0;
//Runs the "TCompTest" tested application.
TestedApps.TCompTest.Run();
//Clicks the 'button1' button.
Aliases.TCompTest.HwndSource_MainWindow.MainWindow.Grid.button1.ClickButton();
//Clicks the 'button1' button.
Aliases.TCompTest.HwndSource_MainWindow.MainWindow.Grid.button1.ClickButton();
//Clicks the 'button1' button.
Aliases.TCompTest.HwndSource_MainWindow.MainWindow.Grid.button1.ClickButton();
//Increment = dotNET.Incrementer.Incr1.zctor().IntValue(true);

Increment = dotNET.Incrementer.Incr1.zctor().IntValue(true);

**OR**

Increment = Sys.Process("TCompTest").AppDomain("TCompTest.exe").dotNET.Incrementer.Incr1.zctor().IntValue(true)

// if(Increment == 8)
// {//Posts an information message to the test log.
Log.Message(Increment);
// }
//Closes the 'HwndSource_MainWindow' window.
Aliases.TCompTest.HwndSource_MainWindow.Close();
}

最佳答案

应该可以从 TestComplete 中执行您需要的操作。但首先,为了避免误解,让我解释一下您尝试的方法存在的问题:

  • 通过“dotNET”对象寻址类。
    执行此操作时,TestComplete 在其服务进程中初始化 .NET,将指定的程序集加载到其中,并处理加载到 TestComplete 的 AppDomain(尽管位于单独的进程中)的此程序集的类。这意味着您的程序集的这个实例与您测试的应用程序无关。因此,您无法通过 dotNET 对象访问应用程序的数据。
  • 通过测试应用程序的 AppDomain 处理增量器程序集。
    好的,在这种情况下,您更接近于解决方案 - 您使用被测试应用程序的 AppDomain,因此您可以访问应用程序的数据。但是,在您的代码中,您创建了 Incr1 类的新实例(通过调用 zctor)。这意味着新的类实例将在构造函数中初始化它的计数器,它将是 5。这就是您在代码中获得的值。

  • 所以,正确的方法:

    除非包含当前计数器值的 Incr1 类的计数器字段是静态字段,否则您需要对 Incr1 类的现有对象进行寻址以获取属性的当前值,而不是创建新的类实例。实际实现将取决于您在应用程序中存储 Incr1 类实例引用的位置。假设您将引用存储在 MainWindow 对象的 Counter 属性中:
    // Creating an instance of the class somewhere in your code
    MainWindow.Counter = new Incr1();

    // ...

    // And this line of code is in the button click handler
    MainWindow.Counter.Increment();

    在所描述的情况下,您将能够在 TestComplete 脚本中获取当前计数器值,如下所示:
      var MainWnd = Aliases.TCompTest.HwndSource_MainWindow.MainWindow;
    Log.Message(MainWnd.Counter.IntValue(true));

    如果您的设置不同,请描述它 - 我会尽力提供相应的帮助。

    关于wpf - 在 TestComplete 的 UI 测试实例上调用 .Net 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332530/

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