从 VS2010 执行的一组测试中的第二个编码 UI 测试挂起并导致所有后续测试失败

发布于 2025-01-08 06:32:56 字数 679 浏览 1 评论 0原文

我开发了大量编码 UI 测试,作为集成、系统和验收测试套件的一部分。

根据定义,每个测试都必须从头开始,因此任何给定的测试都必须删除产品所依赖的一个、两个或三个底层数据库。此外,测试也是特定于机器的,因此它们是通过 XML 文件驱动的数据,使测试人员能够灵活地在他们选择的任何机器上运行测试,只要他们遵循测试设置程序即可。

我为测试可执行文件开发了配置设置,您可以在其中配置数据库连接字符串、sa 帐户以及用于连接到数据库的运行时帐户。这些设置驻留在测试可执行文件的 app.config 中。

在每次测试开始时,我都会调用对象的静态方法,例如 SQLUtility,其中我将删除现有数据库并从备份中恢复它。 SQLUtility 对象使用 Microsoft.SQLServer.Management.SMO 并确保它使用 SA 帐户连接到 SQL Server,执行还原操作,最后重新创建产品用于访问指定数据库的数据库登录名。

我遇到的问题是,如果我一次手动运行一个测试,它们运行得很好。如果我在当前上下文中运行所有测试,则只有第一个测试会执行,第二个测试会超时。

任何人都可以帮助我,或者为我指出正确的方向,为什么会发生这种情况?是否有可能因为 SQLUtility 是一个静态对象,所以 Microsoft 测试框架在每次测试之间都无法正确卸载它?

谢谢, 马丁

I have a whole lot of Coded UI tests that I developed as part of our integration, system, and acceptance testing suite.

By definition each test has to start from a clean slate, and as such any given test has to drop one, two, or three of the underlying databases that the product relies on. Moreover, tests are also machine specific and as such they are data driven via XML files, giving the testers flexibility to run the tests on any machine they chose, as long as they follow the test setup procedures.

I developed configuration settings for the test executable where you can configure the database connection string, sa account, as well as run time accounts used to connect to the database. These settings reside in the app.config of the test executable.

At the beginning of each test I call a static method of an object, for example SQLUtility where I would drop the existing database and restore it from back up. The SQLUtility object uses the Microsoft.SQLServer.Management.SMO and ensures that it connects to SQL Server with the SA account, does the restore operation, and finally re-creates the DB logins used by the product to access the specified database(s).

The problem I am experiencing is that if I ran the tests one at a time manually, they run fine. If I run all tests in the current context, only the first one executes and the second one times out.

Can any one help me, or point me in the right direction, as to why this happens? Is it possible that because the SQLUtility is a static object it doesn't get unloaded properly by the Microsoft Test framework between each test?

Thanks,
Martin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧时模样 2025-01-15 06:32:56

在每个测试方法中定义“SQLUtility”方法的对象。不要全局声明它。我希望这能解决你的问题。

Define the object for 'SQLUtility' method in each Test Method. Don't declare it globally. I hope this will solve you problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文