Sometimes when you write a test with xUnit.net (or other testing frameworks) you may run into problems if UI technologies are involved. This usually relates to the fact that the test must execute using a specific threading model such as single-threaded apartment (STA).
For example suppose you had a WPF app that you wanted to add tests for.
The XAML looks like:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TextBlock FontSize="42" Text="{Binding Path=Greeting}" />
</Grid>
</Window>
And the simple quick and dirty view model class looks like:
namespace WpfApp1
{
public class MainWindowViewModel
{
public string Greeting { get; set; }
}
}
And in the MainWindow constructor we set the data context:
public MainWindow()
{
InitializeComponent();
var vm = new MainWindowViewModel { Greeting = "Hi there!" };
DataContext = vm;
}
(This is a very simple demo code with no change notifications etc.)
If you wanted to write an xUnit.net test that instantiates an instance of MainWindow, such as:
1
2
3
4
5
6
7
8
9
10
11
#ui #xunit.net