Home Once Per Test Run: Using the Azure Storage Emulator with xUnit.net v2
Post
Cancel

Once Per Test Run: Using the Azure Storage Emulator with xUnit.net v2

If you’re using the Azure Storage Emulator as part of a suite of integration tests using xUnit.net v2, ideally you start and stop the emulator only once per test run. With xUnit.net v2, you can accomplish this using ICollectionFixture<TFixture> and decorating your test classes with CollectionAttribute.

By using the CollectionAttribute, you’re instructing xUnit.net 2.x to run these tests in serial (which, is good, since parallel tests in this manner could be problematic).

Check this out:

1
2
3
4
[CollectionDefinition("AzureStorageIntegrationTests")]
public class AzureStorageEmulatorCollection : ICollectionFixture<AzureStorageEmulatorFixture>
{
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class AzureStorageEmulatorFixture : IDisposable
{
    private readonly AzureStorageEmulatorAutomation _automation;

    public AzureStorageEmulatorFixture()
    {
        _automation = new AzureStorageEmulatorAutomation();

        Console.WriteLine("----- Invoking Automation Start -----");
        _automation.Start();
    }

    public void Dispose()
    {
        Console.WriteLine("----- Invoking Automation Dispose -----");
        _automation.Dispose();
    }
}
1
2
3
4
5
6
7
8
9
[Collection("AzureStorageIntegrationTests")]
public class IntegrationTestClass1
{
    [Fact]
    public void VerifyEmulatorIsRunning()
    {
        Assert.True(AzureStorageEmulatorAutomation.IsEmulatorRunning());
    }
}
1
2
3
4
5
6
7
8
9
[Collection("AzureStorageIntegrationTests")]
public class IntegrationTestClass2
{
    [Fact]
    public void VerifyEmulatorIsRunning()
    {
        Assert.True(AzureStorageEmulatorAutomation.IsEmulatorRunning());
    }
}

A full example of this is available at https://github.com/kendaleiv/azure-storage-integration-tests.

This post is licensed under CC BY 4.0 by the author.

Starting, Stopping, and Clearing the Azure Storage Emulator in C#

Integrating Google Chrome With KeePass Using chromeIPass and KeePassHttp

Comments powered by Disqus.