Использование MSTest, xUnit или NUnit с ядром dotnet

#.net #asp.net-core #mstest

#.net #asp.net-core #mstest

Вопрос:

TLDR — Перейдите к ответу для получения подробной информации о рабочей настройке xUnit или MSTest. xUnit был наименее болезненным вариантом.

Мне не удалось заставить NUnit работать на моем сервере сборки, поэтому я решил попробовать как xUnit, так и MSTest — ни один из них не сработал для меня.

MSTest я просто не получаю — я ожидал, что это сработает, но когда я пытаюсь установить dotnet-test-mstest из nuget, у меня возникают проблемы с зависимостями, поскольку все его зависимые библиотеки несовместимы, например, для netcoreapp1….

Зависимость MSTest.ObjectModel 1.0.1-preview не поддерживает framework .NETCoreApp, версия = v1.0.

MSTest зависимости.TestAdapter.Dotnet 1.0.4-предварительный просмотр не поддерживает framework.

Кто-нибудь может дать какие-либо советы о том, почему это может происходить?

Комментарии:

1. вам нужно показать полученную ошибку и ваш проект json, иначе можно только строить догадки. Кроме того, если вы перейдете к NuGet nuget.org/packages/MSTest . TestAdapter. В Dotnet вы увидите: «Владелец не внес этот пакет в список. Это может означать, что пакет устарел или его больше не следует использовать «. — так что я предполагаю, что это может быть частью вашей проблемы.

2. Я больше не могу предоставить — сообщения об ошибках приведены в моем первоначальном описании. Я просто создаю пустой проект, и это происходит. Ключевая проблема, похоже, заключается в том, что он вообще не устанавливается. Мне интересно, не обновила ли Microsoft тестовую среду в соответствии со всем остальным. Онлайн-информация скудна, и ее очень сложно выделить в разных версиях.

3. Я также видел сообщение без списка, и я думаю, что вы можете быть правы, но оно не указывает, что делать вместо этого.

4. Это: blogs.msdn.microsoft.com/visualstudioalm/2016/05/30 /… говорит мне, что у вас не должно быть прямых ссылок на MSTest.ObjectModel или MSTest. TestAdapter. Dotnet в вашем project.json, но только ссылка на MSTest.TestFramework. Я вижу последнюю версию nuget.org/packages/MSTest.TestFramework/1.0.5-preview отправлено несколько дней назад. Вы пробовали это? В качестве примечания — Asp.NET Основные рамочные проекты ( github.com/aspnet ) используют xUnit.

5. У меня нет прямых ссылок. Ошибка возникает при добавлении dotnet-test-mstest, поскольку несовместимые пакеты являются зависимостями от этого. MSTest. Фреймворк сам по себе никуда не годится, вам нужен dotnet-test-mstest, чтобы иметь возможность запускать тесты.

Ответ №1:

Мне удалось заставить это работать, создав совершенно новые проекты, следуя этим инструкциям…

https://learn.microsoft.com/en-us/dotnet/articles/core/testing/using-mstest-on-windows

Кажется, что проекты MSTest dotnet core должны создаваться как консольные приложения для работы ..?

Чтобы помочь всем остальным, вот project.json, с которым я закончил.

 {
    "version": "1.0.0-*",
    "testRunner": "mstest",

    "dependencies": {
        "dotnet-test-mstest": "1.1.1-preview",
        "MyLibrary": {
            "target": "project"
        },
        "Microsoft.NETCore.App": {
            "type": "platform",
            "version": "1.0.1"
        },
        "MSTest.TestFramework": "1.0.4-preview",
        "NSubstitute": "2.0.0-rc"
    },

    "frameworks": {
        "netcoreapp1.0": {
            "imports": "dnxcore50"
        }
    }
}
  

Кажется, я делаю 2 ключевые вещи по-разному. Для начала моя ключевая зависимость была ранее…

 "NETStandard.Library": "1.6.0"
  

в то время как в новом project.json это

 "Microsoft.NETCore.App": {
        "type": "platform",
         "version": "1.0.1"
     }
  

(в исходном project.json это было помещено в раздел frameworks файла в качестве зависимостей).

другой находится в разделе импорта в разделе ‘newtcoreapp1.0’. В исходном project.json я использовал это, включая само себя, тогда как рабочий импортирует dnxcore50 (хотя я все еще не уверен, что это действительно правильно).

Похоже, что есть ошибка с 1.0.5 -предварительный просмотр MSTest.TestFramework — в итоге я сменил версию на более раннюю. С 1.0.5 тесты будут загружаться, но каждый из них завершится ошибкой…

Не удалось загрузить тип ‘LogMessageHandler’ из сборки ‘Microsoft.VisualStudio.Тестовая платформа.Тестовый фреймворк

Я искал где-нибудь, чтобы отправить это как ошибку, но пока не повезло. Если кто-нибудь обнаружит это с теми же проблемами и знает, где его зарегистрировать, пожалуйста, дайте мне знать, и я добавлю » 1″.

Для полноты картины, вот файл project.json, который работает для NUnit (хотя это NUnit 3 и чтение его выходных файлов является (на момент написания) проблемой в VSTS…

 {
    "dependencies": {
        "MyLibrary": {
            "target": "project"
        },
        "NETStandard.Library": "1.6.0",
        "NUnit": "3.5.0",
        "dotnet-test-nunit": "3.4.0-beta-1"
    },
    "frameworks": {
        "netcoreapp1.0": {
            "imports": [
                "netcoreapp1.0",
                "portable-net45 win8"
            ],
            "dependencies": {
                "Microsoft.NETCore.App": {
                    "version": "1.0.1-*",
                    "type": "platform"
                },
                "NSubstitute": "2.0.0-rc"
            }
        }
    },
    "testRunner": "nunit",
    "version": "1.0.0-*"
}
  

И вот xUnit — я еще немного поиграю с этим, поскольку он кажется более жизнеспособным на VSTS…

 {
    "version": "1.0.0-*",
    "buildOptions": {
        "debugType": "portable"
    },
    "dependencies": {
        "System.Runtime.Serialization.Primitives": "4.1.1",
        "xunit": "2.1.0",
        "dotnet-test-xunit": "1.0.0-rc2-build10015",
        "NSubstitute": "2.0.0-rc",
        "MyLibrary": {
            "target": "project"
        }

    },
    "testRunner": "xunit",
    "frameworks": {
        "netcoreapp1.0": {
            "dependencies": {
                "Microsoft.NETCore.App": {
                    "type": "platform",
                    "version": "1.0.1"
                }
            },
            "imports": [
                "dotnet5.4",
                "portable-net451 win8"
            ]
        }
    }
}
  

Более полезная информация о xUnit здесь — https://learn.microsoft.com/en-us/dotnet/articles/core/testing/unit-testing-with-dotnet-test

В целом, я обнаружил, что, приняв во внимание работу с VSTS, xUnit был намного проще в использовании — вам просто нужно настроить задачи сервера сборки для использования командной строки dotnet test, а затем использовать задачу публикации тестовых файлов для отображения результатов. После долгих усилий я все еще не мог заставить тестовый запуск MS пройти на сервере сборки.

Комментарии:

1. Вы абсолютно правы насчет 1.0.5-предварительного просмотра MSTest.TestFramework. Я изменил его на 1.0.4, как вы сказали, и все работает нормально. Я не понимаю, почему нет правильной документации о. Сетевое ядро? Некоторые примеры и коды на их сайтах вообще не работают в другой области. В этом руководстве говорилось, что нам нужно использовать «Библиотеку», а не «консольное приложение».

2. Я настоятельно рекомендую использовать xUnit, если это вариант, это было гораздо менее болезненно, чем пытаться получить MSTest. В конце концов, фреймворк работает. Дополнительным преимуществом является кроссплатформенность.

3. Я также поддерживаю комментарий @TTCG. Возникла та же проблема

Ответ №2:

Следовательно, проблема с dotnet-test-mstest 1.1.1-preview и MSTest.TestFramework 1.0.5-preview, поднятая @TTCG, была исправлена в более поздней версии. Не стесняйтесь попробовать это на dotnet-test-mstest 1.1.2-preview и MSTest.TestFramework 1.0.6-preview.

Комментарии:

1. обновление dotnet-test-mstest до версии 1.1.2-preview устранило проблему. Спасибо!