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
No one has answered this question yet
Check out similar questions: