gpt4 book ai didi

c# - 使用 NUnit 自动测试 WPF 应用程序

转载 作者:行者123 更新时间:2023-11-30 18:29:10 26 4
gpt4 key购买 nike

我正在寻找一种简单的方法来测试(中型)WPF 应用程序。类似于您使用 BDD 所做的事情,但没有花哨的 specflow 脚本,我们不想调用鼠标点击,而是只想与 ViewModel 层交互。

我稍微重构了代码,以便可以更轻松地从单元测试启动应用程序。这就是我现在拥有的:

[TestFixture, RequiresSTA]
public class StartAndInitializeTests
{
[Test]
public void StartAndInitializeSystemControl()
{
var systemControl = new SystemControl((string) "302");

// This line of code never gets executed because of App.Run() is not returning until
// the application stops.
ViewModelContext.MachineControllerViewModel.InitMachine();
}
}

显然 InitMachine 方法永远不会执行,因为最终构造 SystemControl 会导致启动 WPF 应用程序 (App.Run()).

解决这个问题的最佳方法是什么?手工制作一些将事件发布到 UI 线程并“模仿”用户事件的多线程框架?或者是否有我应该了解的经过验证的框架?或者我应该采用完全不同的方法吗?

附言:

  • 我们不寻求使用 specflow 的方法,因为我们真的不需要外部利益相关者来编写测试,所以我们可以并且将直接在 NUnit 中管理它
  • 我们希望直接与 ViewModel 交互,这样我们就不必费心使用像 White 这样的框架。也许我们将来会沿着这条路走下去,但对于初学者来说,我们希望它尽可能简单。

非常感谢!

最佳答案

在 ViewModel 级别进行测试时,通常不需要初始化整个应用程序。你应该使用依赖注入(inject),这意味着如果你实例化一个 ViewModel,它的任何依赖都会被适本地注入(inject)到它的构造函数中。然后,您可以对生成的 ViewModel 执行测试。您可能希望连接到 ViewModel OnChangeNotify 事件和您的模型以执行测试验证。

一个简单的示例可能是您的 ViewModel 上的属性修饰符,它修改了模型中的属性。一个示例测试可能会构造有问题的 ViewModel 并连接到 ViewModel 下的模型,修改 ViewModel 上的属性并检查模型中是否修改了适当的值。

关于c# - 使用 NUnit 自动测试 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445321/

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