Как создать только один метод Main без «В программе определено более одной точки входа» в тестировании Nunit (проект ASP.NET Core, Visual Code) - PullRequest
0 голосов
/ 20 сентября 2019

Я создал основной проект asp.net - dotnet new web api - в коде Visual Studio (не было даже поддержки отладчика с расширением c # для системы x86).Тогда мне нужно было реализовать тесты Nunit.Я создал команду dotnet new nunit в одной из папок проекта вместе с контроллером, хранилищем, папкой моделей.Затем я передал ссылку на внешний проект в test.csroj.Действительно, как это случилось, мне нужно было передать в мой файл main.csproj эти автоматически созданные зависимости для использования классов Nunit в моих файлах классов testfixture?!

<ItemGroup>
    <PackageReference Include="NUnit" Version="3.11.0"/> 
    <PackageReference Include="NUnit3TestAdapter" Version="3.11.0"/>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0"/>
</ItemGroup>

Так что, похоже, я мог удалить эти ссылки из теста.csproj, где они были созданы во время создания новой nunit dotnet (действительно, я ушел, так как, вероятно, это не должно работать и без этих дубликатов) ... Действительно, здесь я получил два автоматически сгенерированных файла с методом main, в дополнение к Main в базовом файле Program.cs -поэтому мне нужно было прокомментировать Main в последнем случае для запуска тестов nunit.Здесь это, кажется, главная проблема, я не знаю, как освободить.Это -

// <auto-generated> This file has been auto generated. </auto-generated>
    using System;
  [Microsoft.VisualStudio.TestPlatform.TestSDKAutoGeneratedCode]
    class AutoGeneratedProgram {static void Main(string[] args){}}

- появляется в Test.Program.cs (.. testfolder \ obj) и в MainProject.Program.cs (..MainProject \ obj \ Debug \ netcoreapp2.2).Добавление в Test.csproj - <GenerateProgramFile>false</GenerateProgramFile>, не решенная проблема действительно ложно решена с автогенерацией GenerateAssemblyInfo.

<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <IsPackable>false</IsPackable>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>

Действительно, этот ресурс https://andrewlock.net/fixing-the-error-program-has-more-than-one-entry-point-defined-for-console-apps-containing-xunit-tests/ говорит о том, что он должен разрешать CS0017 Программа имеет более одноготочка входа определена.Скомпилируйте с / main, чтобы указать тип, содержащий точку входа.Хотя я не пытался использовать такое письмо, как

<GenerateProgramFile Condition="'$(GenerateProgramFile)' == ''">true</GenerateProgramFile>

, так как предлагаю, оно совпадает с предыдущим предложением.Более того, в некоторых сочетаниях была зависимость моего теста, автоматически сгенерированного Main (), от externalproject obj Main (), поэтому с закомментированным Main () в Program.cs он не мог быть запущен в целом.Я также не могу добавить Exe в MyProject.csproj, так как это веб-API, а не консольный проект.Таким образом, единственное половинное решение временно освободить автоматически сгенерированные файлы с помощью Main () и без комментирования main () Program.cs было удалить <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0"/> в MainProject.csproj и оставить

<ItemGroup>
    <PackageReference Include="NUnit" Version="3.11.0"/>
    <PackageReference Include="NUnit3TestAdapter" Version="3.11.0"/>

... свсе три элемента в Test.csproj.Таким образом, для тестирования dotnet и запуска dotnet мне нужно удалить папку obj в Testsubfolder или удалить только файл Tests.Program.cs в BooksApi \ Tests \ obj \ Debug \ netcoreapp2.2, который появляется после запуска тестов ???Что делать, снимать автогенерацию Майна в целом ???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...