SmartTests 1.6.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package SmartTests --version 1.6.0                
NuGet\Install-Package SmartTests -Version 1.6.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SmartTests" Version="1.6.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SmartTests --version 1.6.0                
#r "nuget: SmartTests, 1.6.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SmartTests as a Cake Addin
#addin nuget:?package=SmartTests&version=1.6.0

// Install SmartTests as a Cake Tool
#tool nuget:?package=SmartTests&version=1.6.0                

Smart Tests


We all know how unit testing is important for non-regression of our softwares.

We all know that TDD (Test Driven Development) enables us to have better code and better management of the development process.

Fortunately, it is very easy to learn Testing Frameworks and to write unit tests technically.

BUT, it is very hard to think the good way to write unit test:

  1. How do I know how many tests to write?
  2. More, how do I know which cases we have to test?
  3. According to our Act code, it is very easy to assert that:
    1. A property changed, but how do we know if any other unexpected side effect occurred?
    2. A property changed, but how do we know if our test is still correct if anyone changed our Setup? For example, by giving the value you want to set as the initial value of your object?
  4. How can we show the expected effect of the Act code as we generally use hard coded values (because it is easier to code)?
  5. Finally, how can we do high level testing without multiple lines of code?

What is Smart Tests

Smart Tests is a library and a Visual Studio Analyzer to respond to all these questions... and more!

  1. The Act line of your test is instantly identifiable.
  2. You express your Act logical intent and the Analyzer will display all missing tests.
  3. You can use smarter assertions than the ones provided by usual Testing Frameworks as Smart Tests knows what is your Act and when it is run.
    1. You ensure that a PropertyChanged event is raised with only one line of code.
    2. You ensure that any event is raised with only one line of code.
    3. You ensure that an object didn't changed at all with only one line of code.
    4. You ensure that your property set is effective by checking its value after is not equal to its value before with only one line of code.
    5. You show each effect of your Act code relatively its previous value with only one line of code.

For now, it supports C# with NUnit, Xunit or MSTests.

However, it will very easy to add other Testing Frameworks (you only write a very simple sub-class). You can also extend smart assertions in a very easily way.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp1.0 was computed.  netcoreapp1.1 was computed.  netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard1.0 is compatible.  netstandard1.1 was computed.  netstandard1.2 was computed.  netstandard1.3 was computed.  netstandard1.4 was computed.  netstandard1.5 was computed.  netstandard1.6 was computed.  netstandard2.0 was computed.  netstandard2.1 was computed. 
.NET Framework net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen30 was computed.  tizen40 was computed.  tizen60 was computed. 
Universal Windows Platform uap was computed.  uap10.0 was computed. 
Windows Phone wp8 was computed.  wp81 was computed.  wpa81 was computed. 
Windows Store netcore was computed.  netcore45 was computed.  netcore451 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SmartTests:

Package Downloads

An analyzer to find missing tests for tests written with SmartTests.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.13.0 510 1/7/2022
1.12.0 702 6/28/2020
1.11.0 656 2/2/2020
1.10.0 697 10/6/2019
1.9.0 726 6/29/2019
1.8.0 801 4/28/2019
1.7.0 870 2/17/2019
1.6.0 1,101 12/15/2018
1.5.0 968 9/29/2018
1.4.2 1,065 7/31/2018
1.4.1 1,014 7/29/2018
1.4.0 1,009 7/28/2018
1.3.0 1,180 4/5/2018
1.1.2 1,141 12/16/2017
1.1.0 1,524 11/11/2017
1.0.1 1,155 10/1/2017
1.0.0 1,247 9/30/2017

Criteria can now be Enum values.
This enables you to generate a random value within this equivalence class of enum values for your test and to be sure all possibilities are tested (as expected for a criteria)