【问题标题】:Console App to start a CodedUI test用于启动 CodedUI 测试的控制台应用程序
【发布时间】:2012-07-13 11:10:11
【问题描述】:

我有一个编码的 ui 测试,我想通过使用批处理开始,它是一个 .dll 文件。

我从批处理文件中调用它的原因是必须重新启动服务器才能执行此测试。

只是简单的call test.dll 还是我必须做其他事情?

更新 找到代码

Playback.Initialize();
TestProject.CodedUITest1 coded = new TestProject.CodedUITest1();
coded.CodedUITestMethod1();
Playback.Cleanup();

取自Here,它缺少来自私有程序集的两个引用添加:

  1. Microsoft.VisualStudio.TestTools.UITest.Extension.Uia.dll
  2. Microsoft.VisualStudio.TestTools.UITest.Extension.IE.dll

希望这可以帮助其他想要这样做的人

【问题讨论】:

  • 你不能像运行可执行程序一样运行 DLL。

标签: c# testing dll batch-file coded-ui-tests


【解决方案1】:

您不能像运行 exe 一样运行 Dll 文件。一个DLL包含一个程序要使用的代码,这意味着一个代码源可以被多个程序使用,这样可以节省重复代码。

通常 Dll 将具有可通过程序调用的记录函数,除非您自己构建它,在这种情况下您会知道 :)

尝试找到使用 Dll 的程序并调用它,或者找到它的文档并将rundll32 中的函数作为@PA 运行。建议。

【讨论】:

  • 我自己构建/将自己构建它,编码 ui 测试以在机器重新启动后打开并启动一个程序。
  • 这是用什么语言编码的?对此的解决方案将在很大程度上取决于此。
  • 那么您将无法使用rundll32,因为C# Dll 不是真正的 Dll。你也制作了 Dll 吗?
  • 我不确定我是否做到了。我写了代码,调试文件夹中有一个.dll。反正有这样称呼吗?
  • 你一定已经创建了一个DLL项目。 DLL 名称是否与您的项目相同?如果是这样,那么创建一个控制台应用程序,然后您可以添加对 DLL 的引用,并使用 DLLName.DLLClass.DLLMethod(); 访问
【解决方案2】:

DLL 是需要从应用程序链接和调用的动态库。每个 DLL 都有自己的导出接口,或要从外部可执行文件调用的入口点集合,或者可能是从另一个 DLL 调用的入口点集合。

Windows 提供了一组调用来帮助调用程序加载、检测入口点和卸载 DLL。除了这个有限的通用功能之外,还有无数种使用 DLL 的方式、调用约定、传递参数的方式、参数的类型、返回数据的方式、同步、通知的方式事件、中断、多线程,几乎涵盖了编程模型的各个方面。

话虽如此,您的 DLL 可能会被某些特定的应用程序调用,因此可能遵循严格且定义良好的 API。一种此类 DLL 是旨在与 rundll 可执行程序一起运行的 Windows 系统 DLL。 rundll32.exe 是 Windows 系统可执行文件,它从一个明确编程为以这种方式调用的 DLL 启动和调用打包和交付在 .dll 文件中的函数。

要在 TEST.DLL 中调用 TestFunction,将 1234 作为参数传递,您可以使用

RUNDLL32  TEST.DLL, TestFunction 1234

Rundll 将为您执行以下任务

  • 通过 LoadLibrary() 加载 TEST.DLL。
  • 通过 GetProcAddress() 寻址 TestFunction 函数。
  • 调用 TestFunction 函数,传递命令行的其余部分
  • 卸载 DLL 并退出。

【讨论】:

  • 所以我使用RUNDLL TEST.DLL 代替call test.dll 开始我的测试,一个编码的用户界面?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2010-10-30
  • 2013-01-26
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多