GitXplorerGitXplorer
A

Xunit.StaFact

public
93 stars
32 forks
8 issues

Commits

List of commits on branch main.
Verified
30b7f2e60267adf4c9a6a768c6fb7dfc52bb62d9

Merge pull request #117 from AArnott/dev/andarno/libtemplateUpdate

AAArnott committed 20 hours ago
Verified
291b8fe46656dfb2a7fb2b20457fca59bb5c94f6

Merge the main branch from https://github.com/aarnott/Library.Template

AAArnott committed 20 hours ago
Verified
b9f8bc9561e76aa68cac7e4ec41ece0364c123a0

Fix typo

AAArnott committed 3 days ago
Verified
cbf872076e88d492dfcbe56780dac4ce104e6165

Merge branch 'xunitConfigMigration'

AAArnott committed 3 days ago
Verified
25d6df9315be95115c164411a39ee242b29de0ed

Migrate xunit settings from app.config to xunit.runner.json

AAArnott committed 3 days ago
Verified
8c45970cd587e8923048ebef3db71ad559a870a3

Update Dockerfile and global.json updates to v9.0.102 (#340)

rrenovate[bot] committed 3 days ago

README

The README file for this repository.

Xunit.StaFact

Build Status NuGet package

Run your xunit-based tests on an STA thread with the WPF Dispatcher, a WinForms SynchronizationContext, or even a cross-platform generic UI thread emulation with a SynchronizationContext that keeps code running on a "main thread" for that test.

Simply use [WpfFact], [WinFormsFact], [StaFact] or the cross-platform [UIFact] on your test method to run your test under conditions that most closely match the main thread in your application.

Theory variants of these attributes allow for parameterized testing. Check out the xunit.combinatorial nuget package for pairwise or combinatorial testing with theories.

Features

The following test attributes are supported:

Xunit test attributes Supported OS's SynchronizationContext STA thread?
[UIFact, UITheory] All Yes1 yes2
[WpfFact, WpfTheory] Windows only3 DispatcherSynchronizationContext yes
[WinFormsFact, WinFormsTheory] Windows only3 WindowsFormsSynchronizationContext yes
[StaFact, StaTheory] Windows only3 No yes
[CocoaFact, CocoaTheory] Mac OSX only3 Yes1 no

1 This is a private SynchronizationContext that works cross-platform and effectively keeps code running on the test's starting thread the way a GUI application's main thread would do.

2 STA thread only applies on Windows. On other operating systems, an MTA thread is used.

3 Windows-only attributes result in the test to result in "Skipped" on other operating systems.

We also offer a [UISettingsAttribute] that can be applied to individual test methods or test classes to control the behavior of the various UI test attributes. This attribute offers a means to add automated retries to a test's execution for unstable tests.

Samples

[UIFact] // or [WinFormsFact] or [WpfFact]
public async Task WpfFact_OnSTAThread()
{
    Assert.Equal(ApartmentState.STA, Thread.CurrentThread.GetApartmentState());
    int originalThread = Environment.CurrentManagedThreadId;
    await Task.Yield();
    Assert.Equal(originalThread, Environment.CurrentManagedThreadId); // still there
}

See more samples.