Rider case sensitiveness

Why Rider doesn't discover tests in of the projects? Magic, certainly not :(

June 16, 2018 - 3 minute read -
JetBrains Rider

Hi,

a couple of days ago I started (in fact I come back to) using a Rider IDE when developing C# based project. I came to a weird situation when trying to run unit and integration tests, cause Rider to start them, but it couldn’t discover tests in one project. It seems weird, cause as I remember everything works fine with discovering those tests in Visual Studio or in a Cake script. I start digging into what could be wrong here. I thought that maybe there could be some problem in a csproj file which causes Rider to not discovered tests properly. I find out that the csproj for this project which couldn’t be discover by Rider test runner (but could be by Resharper test runner) looks like this:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="autofac" Version="4.8.1" />
    <PackageReference Include="Dapper" Version="1.50.4" />
    <PackageReference Include="FakeItEasy" Version="4.5.1" />
    <PackageReference Include="fluentassertions" Version="5.3.0" />
    <PackageReference Include="microsoft.extensions.configuration" Version="2.0.2" />
    <PackageReference Include="microsoft.extensions.configuration.json" Version="2.0.2" />
    <PackageReference Include="microsoft.net.test.sdk" Version="15.7.0" />
    <PackageReference Include="NUnit" Version="3.10.1" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.10.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\SomeRelatedProject.csproj" />
  </ItemGroup>
</Project>

At first glance, everything looks fine. I compare it with another csproj for a project for which tests were discovered correctly and it looks like this:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <AssemblyName>JetShop.Commerce.IntegrationTests</AssemblyName>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Dapper" Version="1.50.4" />
    <PackageReference Include="FakeItEasy" Version="4.5.1" />
    <PackageReference Include="FluentAssertions" Version="5.3.0" />
    <PackageReference Include="FsCheck" Version="2.10.10" />
    <PackageReference Include="FsCheck.Nunit" Version="2.10.10" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
    <PackageReference Include="NUnit" Version="3.10.1" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.10.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\RelatedProject1.csproj" />
    <ProjectReference Include="..\RelatedProject2.csproj" />
  </ItemGroup>
</Project>

Yup this is it, I got you! It seems that rider decides if he has to scan some specific project(s) for tests only when this project contains in dependencies a Microsoft.Net.Test.Sdk but as it seems when rider scans csprojs it scans them taking into consideration a case sensitiveness, so when I change a microsoft.net.test.sdk to a Microsoft.Net.Test.Sdk, everything starts to work correctly.

So when you are using rider please be cautious that it could be case sensitive sometimes :)

#edit It is already fixed and should work correctly in Rider 2018.2.

Thanks for reading!