Universal Apps, WP8.1, xUnit2 or what else is new in Fluent Assertions 3.1

Yesterday, much later than planned, Fluent Assertions 3.1 as well as its companion project Fluent Assertions for Xamarin were released on Github and NuGet. As is becoming quite common this year, the honors for most active contributors once again go to Adam Voss and Oren Novotny. Next to being the author of the Xamarin version of FA, Oren contributed the necessary internal redesign to support Univeral Apps, Windows 8.1, Windows Phone Silverlight 8.1 and Windows Phone 8.1. But as if he didn't do enough, he also found the time to add support for xUnit 2. At the same time, Adam has been instrumental in solving the many little bugs reported through Github as well as refactoring and improving a lot of the code related to the structural equivalancy assertion API. Another contributor, Kevin Kyszyk, introduced a syntax to assert that a particular assembly doesn't reference another one.

I've focused a considerable portion of my free time on rewriting the internal detection logic that is used to connect the framework-specific parts into the core Portable Class Library. My original assumption that sooner or later somebody would touch the AssertionExtensions class was wrong. I'm now borrowing the detection logic from the Portable Class Library Contrib project which uses assembly scanning for linking the PCL and non-PCL assemblies together.

A nice side-effect of Oren's usage of Shared Projects to remove any duplication between the framework-specific assemblies, that I could reintroduce support for the plain old .NET 4.0. During the conversion to a Portable Class Library I discovered that .NET 4.0's PCL implementation did not support the XML classes yet. That's why I had to retarget the PCL project to .NET 4.0.3 At that time, I underestimated the impact this would have on existing developers. With v3.1, I've fixed that.

As usual, the detailed release notes as well as the zipped binaries can be found here. If you're interested in future builds you might be interested in the MyGet feed. Our development pipeline will automatically publish a new NuGet package for every successful build.

Share on

Leave a Comment

You May Also Enjoy

It may be coincidence, but the two best tutorials I attended at Agile DevOps East both ran on the same day. The first one focused mostly on agile transformation, but briefly touched on the leadership topic. This one, let by Jennifer Bonine, took this further by focusing on being a better leader b...

For my annual conference trip, I decided to skip the always-great QCon conference for once and instead attend Agile DevOps East in Orlando, Florida. In addition to the typical conference schedule, I also registered for some of the half-day and full day tutorials. One of them, How to lead high-per...

Transient vs non-transient exceptions
If I have to name the single biggest flaw in adopting Event Sourcing, it must be our decision to rely on the synchronous dispatching pipeline of NEventStore. It is based on the idea that every event will be processed by all projectors in a synchronous manner....