microsoft / testfx

MSTest framework and adapter
MIT License
704 stars 252 forks source link

test without namespace causes null ref #889

Closed SimonCropp closed 1 year ago

SimonCropp commented 3 years ago

The following class

using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
    }
}

in this project

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net48</TargetFramework>
    <IsPackable>false</IsPackable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="2.2.4" />
    <PackageReference Include="MSTest.TestFramework" Version="2.2.4" />
    <PackageReference Include="coverlet.collector" Version="3.0.3">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

produces

PS C:\Code\TestProject1> dotnet test
  Determining projects to restore...
  Restored C:\Code\TestProject1\TestProject1\TestProject1.csproj (in 205 ms).
  You are using a preview version of .NET. See: https://aka.ms/dotnet-core-preview
  TestProject1 -> C:\Code\TestProject1\TestProject1\bin\Debug\net48\TestProject1.dll
Test run for C:\Code\TestProject1\TestProject1\bin\Debug\net48\TestProject1.dll (.NETFramework,Version=v4.8)
Microsoft (R) Test Execution Command Line Tool Version 17.0.0-preview-20210512-01
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[MSTest][Discovery][C:\Code\TestProject1\TestProject1\bin\Debug\net48\TestProject1.dll] MSTestAdapter failed to discover tests in class 'UnitTest1' of assembly 'C:\Code\TestProject1\TestProject1\bin\Debug\net48\TestProject1.dll' because Object reference not set to an instance of an object..
No test is available in C:\Code\TestProject1\TestProject1\bin\Debug\net48\TestProject1.dll. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.

PS C:\Code\TestProject1>

Repro

Env

AB#1633111

Haplois commented 3 years ago

@SimonCropp thanks for your feedback.

nohwnd commented 3 years ago

@SimonCropp this needs to be fixed in our FQN code. We are assuming that there is always an namespace there.

Evangelink commented 1 year ago

Hi @SimonCropp! Sorry it took us so much time to answer and fix your issue.

I have linked a PR that adds an integration test to show issue is fixed and ensures we don't regress.

We will include this change as part of release v3 of MSTest. We cannot ship it as a 2.2.11 release as we were forced to drop support of some .NET Framework to bump the version of Test Platform we are using.

SimonCropp commented 1 year ago

@Evangelink thanks so much. please reach out if you need someone to do some beta testing of version 3

Evangelink commented 1 year ago

With pleasure! I will ping you when we release the preview version. Thanks!

Evangelink commented 1 year ago

Hey @SimonCropp, we just released a pre-release version of MSTest v3.0.0. If you are still up to do some beta testing, we would really like to get your feedback as there are lots of cleanup/infra/bug fixes included already.

SimonCropp commented 1 year ago

@Evangelink yep it now works with test that have no namespace.

Evangelink commented 1 year ago

Awesome thanks! If you are encountering any issue/regression with this pre-release, please raise an issue in the repo and we will make it high prio.