C# TestProject - Как получить CodeFilePath & LineNumber для каждого теста? - PullRequest
0 голосов
/ 25 февраля 2020

Дано:

У меня есть проект / решение, содержащее тесты. Он написан на C# и использует nUnit.

Что я хочу:

Каким-то образом получить все тесты в Project / Solution без выполнения их а также дает мне CodeFilePath и LineNumber для каждого теста.

То, что я пытался / исследовал:

  • dotnet test --list-tests: ничего не дает мне (только displayname )
  • NUnit3TestAdapter: в какой-то момент отображаются эти значения (см. NUnitTestAdapter ). Но как я могу получить их?

1 Ответ

0 голосов
/ 27 февраля 2020

Спасибо @ Charl ie за указание на возможное решение. Я сделал в основном именно так, как вы заявили.

ВАЖНОЕ ЗАМЕЧАНИЕ:

Это, похоже, не работает с точкой. net В настоящее время тесты CORE из-за этой проблемы: https://github.com/nunit/nunit-console/issues/710

Также DiaSession встречается с исключением, когда используется как это в точке. net CORE: - (

using System;
using System.Xml;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using NUnit.Engine;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var testAssemblyPath = @"C:\src\qata\src\tests\external\SomethingProject.Tests\bin\Debug\net461\SomethingProject.Tests.dll";
            var package = new TestPackage(testAssemblyPath);
            var testEngine = new TestEngine();
            var runner = testEngine.GetRunner(package);
            var nUnitXml = runner.Explore(TestFilter.Empty);
            var session = new DiaSession(testAssemblyPath);
            foreach (XmlNode testNode in nUnitXml.SelectNodes("//test-case"))
            {
                var testName = testNode.Attributes["fullname"]?.Value;
                var className = testNode.Attributes["classname"]?.Value;
                var methodName = testNode.Attributes["methodname"]?.Value;
                var navigationData = session.GetNavigationData(className, methodName);
                Console.WriteLine($"{testName} - {navigationData.FileName} - {navigationData.MinLineNumber}.");
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...