从 运行 TestStack.White.Application 获取程序集中的单例
Getting a Singleton in an Assembly from running TestStack.White.Application
我正在使用 Teststack.White 启动 GUI 并与之交互。
模型隐藏在外观后面,允许将测试模拟注入到 GUI 中。 GUI 成功加载测试模拟并且 Teststack.White 可以启动应用程序。
如何使用 Teststack.White.应用程序或此类方式访问我的单例。
/*Singleton in Mock.DLL that will allow test configurations*/
class Hook
{
public Hook SingleHook { get; private set; } = new Hook();
private Hook() { }
}
/*Loader in Nunit so far*/
private Application apploader()
{
ProcessStartInfo info = new ProcessStartInfo(@"C:\MyGUI\MYWPFGUI.exe");
info.WorkingDirectory = (@"C:\MyGUI\");
TestStack.White.Application app = Application.Launch(info);
return app;
}
我目前正在研究使用 AppDomains,但由于此应用程序 运行 在其赢得过程中,我看不出我将如何做到这一点。
我需要掌握 Singleton 才能设置和评估我的测试。
您需要使用反射,第一步是使用 Assembly.Load 或 Assembly.LoadFrom 加载包含 Hook class 的程序集,然后使用 Assembly.CreateInstance或 Activator.CreateInstance 或 AppDomain.CreateInstanceAndUnwrap 方法并传递 Hook class 类型,现在您不能从外部创建单例然后调用 CreateInstance 来创建它,因为它具有私有 ctor,否则您需要使用其他方法如GetMethod和Invoke从Hook Singleton类型访问它的方法太麻烦了。
但是,我建议您正常创建 class class 并在测试应用程序中保留一个单例实例,因此请确保将您的 Hook class 标记为 public class 使用 public 构造函数并在测试项目中创建一个 public static property/variable 以通过反射保存创建的 class 然后您可以访问 Singleton只需调用静态 属性.
即可在测试应用程序的任何位置挂钩 class
我认为唯一的方法是使用某种 inter process communication.
google on here on SO here or here
上有很多例子
我正在使用 Teststack.White 启动 GUI 并与之交互。 模型隐藏在外观后面,允许将测试模拟注入到 GUI 中。 GUI 成功加载测试模拟并且 Teststack.White 可以启动应用程序。
如何使用 Teststack.White.应用程序或此类方式访问我的单例。
/*Singleton in Mock.DLL that will allow test configurations*/
class Hook
{
public Hook SingleHook { get; private set; } = new Hook();
private Hook() { }
}
/*Loader in Nunit so far*/
private Application apploader()
{
ProcessStartInfo info = new ProcessStartInfo(@"C:\MyGUI\MYWPFGUI.exe");
info.WorkingDirectory = (@"C:\MyGUI\");
TestStack.White.Application app = Application.Launch(info);
return app;
}
我目前正在研究使用 AppDomains,但由于此应用程序 运行 在其赢得过程中,我看不出我将如何做到这一点。 我需要掌握 Singleton 才能设置和评估我的测试。
您需要使用反射,第一步是使用 Assembly.Load 或 Assembly.LoadFrom 加载包含 Hook class 的程序集,然后使用 Assembly.CreateInstance或 Activator.CreateInstance 或 AppDomain.CreateInstanceAndUnwrap 方法并传递 Hook class 类型,现在您不能从外部创建单例然后调用 CreateInstance 来创建它,因为它具有私有 ctor,否则您需要使用其他方法如GetMethod和Invoke从Hook Singleton类型访问它的方法太麻烦了。
但是,我建议您正常创建 class class 并在测试应用程序中保留一个单例实例,因此请确保将您的 Hook class 标记为 public class 使用 public 构造函数并在测试项目中创建一个 public static property/variable 以通过反射保存创建的 class 然后您可以访问 Singleton只需调用静态 属性.
即可在测试应用程序的任何位置挂钩 class我认为唯一的方法是使用某种 inter process communication.
google on here on SO here or here
上有很多例子