У меня есть решение, которое имеет 3 проекта.Project2 нужен Project1 для нормальной работы (Project2 вызывает Apis в Project1).
Solution
|-- Project1
| |-- Program.cs
| |-- Startup.cs
|-- Project2
| |-- Program.cs
| |-- Startup.cs
|-- IntegrationTestProject
Я могу запустить 2 проекта вместе, изменив свойства решения, как показано на рисунке ниже, ивсе работало нормально:
![enter image description here](https://i.stack.imgur.com/bd4Ul.png)
Мне нужен способ запуска Project1 из Project2 по коду (из запуска или из SomeService в Project2), и он будетбыло бы здорово, если бы я мог также остановить Project1, когда я перестал запускать Project2.
Я попробовал этот код, и он не запустил Project1:
string[] x = { };
Project1.Program.Main(x);
Редактировать:
IntegrationTestProject используется для тестирования Project2 Apis.Поэтому я создал new TestServer()
из Project2.
Когда я запускаю интеграционный тест, некоторые API успешно (тот, который зависит только от Project2), а другие (тот, который вызывает Apis из Project1), потому что сервер (Project1) недоступен (он не работает)при выполнении теста).
Если я запускаю интеграционный тест во время выполнения Project1, все тесты пройдены успешно.
Я попытался запустить тестовый экземпляр Project1 с помощью new TestServer()
и передать его в Project2.Это работало для некоторых Apis, и я столкнулся с другой проблемой, которая, казалось, не была решена, пока я не запустил Project1, а не его тестовый экземпляр.
Поэтому мое единственное решение - запустить Project1, когда я запускаю интеграционный тест.1030 *
Я создал .bat-файл, который запускает Project1 (с помощью dotnet), а затем запускает интеграционный тест (с помощью dotnet), и он работает нормально.Но проблема в том, что при запуске интеграционного теста из Visual studio он не запускал Project1.
Edit 2:
Это пример проекта, который демонстрируетпроблема, с которой я столкнулся: https://github.com/bilalseh/SampleSolution
1 - Если вы запустите Project2 в одиночку и вызовете (Get: "/ api / home"), он вернет результат.Если вы позвоните (Get: "/ api / home / 5"), у него возникнет проблема, поскольку этот Api зависит от Project1.
2- Если вы откроете Visual Studio и запустите тесты (2 теста) или запустите эти тесты из командной строки с помощью «dotnet test», то 1 тест пройдет (тестирование: «/ api / home») и одинпотерпит неудачу (тестирование: "/api/home/5").
3- Если вы запустите Project1, а затем запустите тесты, оба пройдут.
4- Я сделал .bat файлс именем «запустить тест с временным сервером .bat» в папке тестирования интеграции.Этот файл запускает Project1, затем запускает тесты и затем останавливает Project1.Если вы запустите этот файл, оба теста пройдут.
Мне нужно найти способ запустить Project1 либо из Project2, либо когда я начну интеграционный тест.