taylorjonl
taylorjonl

Reputation: 929

Unit test failing assertion in async unit test

I am trying to unit test some async code. I was previously using NUnit but would like to switch to Xunit but I can't get some tests working. Here is some example code for some working NUnit tests that I simplified for the sake of asking this question:

[TestFixture]
public class Tests
{
    [Test]
    public async Task UsingAsyncTask()
    {
        // Arrange
        PubSubEvent<object> pubSubEvent = Mock.Create<PubSubEvent<object>>();

        // Act
        await Task.Run(() => { pubSubEvent.Publish(new object()); });

        // Assert
        Mock.Assert(() => pubSubEvent.Publish(null), Args.Ignore(), Occurs.Once());
    }
}

Add the following NuGet packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="JustMock" version="2015.1.224.3" targetFramework="net45" />
  <package id="Nito.AsyncEx" version="3.0.0" targetFramework="net45" />
  <package id="NUnit" version="2.6.4" targetFramework="net45" />
  <package id="NUnitTestAdapter" version="2.0.0" targetFramework="net45" />
  <package id="Prism.PubSubEvents" version="1.1.2" targetFramework="net45" />
</packages>

All of these unit tests pass without a problem. So I try the same thing in Xunit:

public class Tests
{
    [Fact]
    public async Task UsingAsyncTask()
    {
        // Arrange
        PubSubEvent<object> pubSubEvent = Mock.Create<PubSubEvent<object>>();

        // Act
        await Task.Run(() => { pubSubEvent.Publish(new object()); });

        // Assert
        Mock.Assert(() => pubSubEvent.Publish(null), Args.Ignore(), Occurs.Once());
    }
}

Add the following NuGet packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="JustMock" version="2015.1.224.3" targetFramework="net45" />
  <package id="Nito.AsyncEx" version="3.0.0" targetFramework="net45" />
  <package id="Prism.PubSubEvents" version="1.1.2" targetFramework="net45" />
  <package id="xunit" version="2.0.0" targetFramework="net45" />
  <package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />
  <package id="xunit.assert" version="2.0.0" targetFramework="net45" />
  <package id="xunit.core" version="2.0.0" targetFramework="net45" />
  <package id="xunit.extensibility.core" version="2.0.0" targetFramework="net45" />
  <package id="xunit.runner.visualstudio" version="2.0.0" targetFramework="net45" />
</packages>

The test fails in Xunit indicating that it is expecting 1 call but has received 0 calls. If I remove the task and run everything synchronously the test passes.

Upvotes: 3

Views: 518

Answers (0)

Related Questions