Tuesday, July 29, 2014

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.

Happy testing!