Вы также можете сделать это
Создайте командный файл для запуска mstest с желаемыми параметрами и используйте фиксированное имя файла результатов. Используйте команду START для файла результатов, чтобы загрузить его в IDE. Сохраните пакетный файл по тому же пути, что и ваше решение.
REM УДАЛИТЬ ФАЙЛ СТАРЫХ РЕЗУЛЬТАТОВ
del TestResults \ auto.trx
mstest /testcontainer:MyApp\UnitTest\bin\x86\debug\MyUnitTest.dll / категория: "Ночные" /resultsfile:TestResults\auto.trx
start TestResults \ auto.trx
Вызывать этот пакетный файл в макросе после каждого события сборки (я использую отдельный поток, чтобы я мог сохранить кодирование в IDE)
В ваших EnvironmentEvents добавьте следующий код
Глобальный флаг, указывающий, следует ли запускать тесты
Частные тесты как логическое
Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
runTests = True
End Sub
Private Sub BuildEvents_OnBuildProjConfigDone(ByVal Project As String, ByVal ProjectConfig As String, ByVal Platform As String, ByVal SolutionConfig As String, ByVal Success As Boolean) Handles BuildEvents.OnBuildProjConfigDone
If Not Success Then
runTests = False
DTE.ExecuteCommand("Build.Cancel")
End If
End Sub
Private Sub BuildEvents_OnBuildDone( _
ByVal Scope As EnvDTE.vsBuildScope, _
ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
If (Action = vsBuildAction.vsBuildActionBuild Or Action = vsBuildAction.vsBuildActionRebuildAll) And _
Scope = vsBuildScope.vsBuildScopeSolution And _
runTests Then
Dim thrd As New System.Threading.Thread(AddressOf threadRunTests)
thrd.Start()
End If
End Sub
Private Sub threadRunTests()
path = System.IO.Path.GetDirectoryName(DTE.Solution.FullName)
Environment.CurrentDirectory = path
DTE.StatusBar.Text = "Running tests..."
Shell(path & "\RunNightlyTests.bat", AppWinStyle.MinimizedNoFocus, True)
DTE.StatusBar.Text = "Finished Running tests"
End Sub