如何在VS 2010中从MSTest方法正确显示对话框?

时间:2010-07-20 14:48:37

标签: c# visual-studio-2010 mstest

我最近将MSTest项目升级到.NET 4.0和VS 2010.一些测试查询外部供应商服务,从而提示用户提供必要的凭据以通过我们的公司Web代理进行通信。这曾经在vs2008中正常工作,但在升级之后,只有当用户在开始测试后立即将焦点从VS切换到另一个应用程序时,才会显示对话框。显示对话框时有什么特别需要做的吗?我能想到的最好的是,在重新设计VS时引入了一些WPF警告。

有问题的代码

private void PromptUser()
        {
            if (!credentialsSet)
            {
                using (CredentialsDialog dialog = new CredentialsDialog(true))
                {
                    Process process = Process.GetCurrentProcess();
                    IWin32Window window = Control.FromHandle(process.MainWindowHandle);
                    DialogResult dr = dialog.ShowDialog(window);

                    if (dr == DialogResult.Cancel)
                    {
                        throw new InvalidOperationException("Credentials not entered");
                    }

                    credentials = dialog.Credentials;
                    user = dialog.Username;
                    password = dialog.Password;
                    domain = dialog.Domain;
                }

                credentialsSet = true;
            }
        }

2 个答案:

答案 0 :(得分:1)

我觉得需要凭据是不好的做法。您是否考虑过将您的凭据添加到测试程序集的配置中。

如果您尝试将其设置为自动构建,则会遇到很多问题。

答案 1 :(得分:1)

您可能需要激活对话框才能让它弹出您活动的任何程序。

using (CredentialsDialog dialog = new CredentialsDialog(true))
{
    Process process = Process.GetCurrentProcess();
    IWin32Window window = Control.FromHandle(process.MainWindowHandle);
    dialog.Activate();
    DialogResult dr = dialog.ShowDialog(window);

    // ...
}

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.activate.aspx