在Visual Studio中运行Pester测试

时间:2016-04-29 12:14:00

标签: visual-studio powershell powershell-tools

安装PowerShell Tools for Visual Studio 2015后,我创建了一个新的Powershell Module Project,用于创建MyProject.psd1一个MyProject.psm1和一个MyProject.tests.ps1文件。

MyProject.tests.ps1文件如下所示

Describe "Connect-Database" {
    Context "When Connection To Database" {
        $result = Connect-Database -host localhost -user admin -pass pass
        It "Should Return True" {
            $result | Should Be $True
        }
    }
}

Connect-Database是MyProject.psm1的一项功能,可通过MyProject.psd1

导出
# Functions to export from this module
FunctionsToExport = 'Connect-Database'

运行PowerShell控制台并执行

Import-Module .\MyProject.psd1
Invoke-Pester

效果很好并返回

Describing Connect-Database
   Context When Connection To Database
    [+] Should Return True 627ms
Tests completed in 627ms
Passed: 1 Failed: 0 Skipped: 0 Pending: 0

我的问题出现了:PowerShell Tools附带了一个测试适配器,我的测试显示在Test Explorer中。

但如果我执行它,它总是以The term Connect-Database is not recognized as cmdlet function script file or operable program

失败

即使将Import-Module .\MyProject.psd1添加到MyProject.tests.ps1文件也无济于事。有没有想过如何在运行测试之前加载我的模块?

1 个答案:

答案 0 :(得分:4)

我将Get-Location | Write-Host添加到MyProject.tests.ps1文件,并发现工作目录为C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE

我首先没有检查,因为我相信测试适配器只会在工作目录中执行Invoke-Pester

最终我用

解决了这个问题
Split-Path $PSCommandPath | Set-Location
Import-Module (".\" + (Split-Path -Leaf $PSCommandPath).Replace(".tests.ps1", ".psd1"))