2016-03-14 18 views
1

Я тестировал проверку покрытия моих модульных тестов с помощью OpenCover и создал сценарий powershell для создания отчета о покрытии с использованием psake.Ошибка выполнения команды Exec на некоторых ПК в скрипте psake для OpenCover

Exec { opencover.console.exe -target:"nunit3-console.exe" -targetargs:"Slu.Taxen.Data.Kol.Test.dll" -register:user -output:"..\Coverage\DataTestResults.xml" -filter:"+[*]* -[Slu.Taxen.Data.Kol.Test*]*" } 

Это работало без проблем на нескольких компьютерах (оба под управлением Windows 10), но когда я попробовал Сегодня на окнах 8.1 машину я получаю сообщение об ошибке:

Incorrect Arguments: The argument '-[Slu.Taxen.Data.Kol.Test*]*' is not recognised 

и затем:

Error: 14/03/2016 16:49:08: 
At F:\Code\Greenbase2\KolAPI\psake.psm1:147 char:17 +     throw ("Exec: " + $errorMessage) + 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [<<==>>] Exception: Exec: Error executing command opencover.console.exe -target:"nu 
nit3-console.exe" -targetargs:"Slu.Taxen.Data.Kol.Test.dll" -register:user 
-output:"..\Coverage\DataTestResults.xml" -f 
ilter:"+[*]* -[Slu.Taxen.Data.Kol.Test*]*" . 

Но если я запустил команду непосредственно в консоли на своих машинах Windows 8.1, она работает нормально. Который подсказывает мне, что это не opencover, который вызывает суету, но Psake или powershell.

Любые подсказки?

ответ

1

Мы обнаружили, что с помощью powershell, который помещает кавычки вокруг всего аргумента, работает лучше при передаче любого аргумента, который содержит пробелы, когда в powershell - см. usage wiki, например. Вместо

-filter:"<filters with spaces>" 

ли

"-filter:<filters with spaces>" 
+0

Спасибо, что работает отлично. Это удивительная проблема, и, возможно, что-то, что они зафиксировали в Powershell 5? –

+0

Я подозреваю, что так - я так привык делать это «другим» способом, я не думал попробовать альтернативу. –