Unit test failed statement in async unit test

I am trying to unit test some asynchronous code. I have used NUnit previously, but would like to switch to Xunit, but I cannot get some of the tests to work. Here's some sample code for some working NUnit tests that I've simplified to ask 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.config package:

<?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 run smoothly. 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.config package:

<?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>

      

A test failure in Xunit indicates that it is waiting for 1 call but has received 0 calls. If I delete the task and execute everything synchronously, the test passes.

+3


source to share





All Articles