Nunit をインストールしましたが、VS 2010 の [ツール] メニューに表示されません。助けてください
4 に答える
@Bili が見つけたものを介して、NUnit を VS 2010 に統合できます。私は Resharper のテスト ランナーを使用することを好みます (ただし、それには多額の費用がかかります)。NCrunch は、NUnit のテストを強化する無料のプラグイン (今のところ) です。単体テストの実行に加えて、コード カバレッジも提供します。NuGet パッケージだと思います。
Visual NUnit拡張機能は非常に役立ちます。NUnit テストを実行するためのツールボックスを追加します。
NUnit を VS 2010 に統合するには、ここをクリックしてください。
NUnit テストを実行するいくつかのマクロを作成しました。プライベートであるはずなので、いくつかの仮定があり、それほど「クリーン」ではありません(私は長い間それに取り組んでいませんでした)...しかし、それらに従いたい場合は、「統合」するための非常に快適な方法を得ることができますVS でのテスト
仮定:
- PATH環境変数にNUnit binフォルダーが必要です
- テストプロジェクト「someName」は「someName.Test」プロジェクトになります(統合テストの場合-「someName.integration」)
作業が簡単になると思われる場合は、コードを次に示します。
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Imports System.Collections.Generic
Imports System.IO
Public Module NUnitExtensions
Sub AttachToNUnit()
Dim attached As Boolean = False
Dim proc As EnvDTE.Process
For Each proc In DTE.Debugger.LocalProcesses
If (Right(proc.Name.ToLower(), 9) = "nunit.exe") Then
proc.Attach()
attached = True
Exit For
End If
Next
End Sub
Private Sub RunNunitFile(ByRef dll)
Dim args = """" & dll & """" & " /run"
System.Diagnostics.Process.Start("nunit.exe", args)
End Sub
Private Function GetSolutionFiles(ByRef filePattern) As String()
Dim solutionDir = System.IO.Path.GetDirectoryName(DTE.Solution.FullName)
Dim nunitFiles = System.IO.Directory.GetFiles(solutionDir, filePattern, IO.SearchOption.AllDirectories)
Return nunitFiles
End Function
Private Function GetDllCompilationAttributes(ByRef dllFullPath) As Boolean()
Dim ActiveDoc As Document = DTE.ActiveDocument
Dim Proj As Project = ActiveDoc.ProjectItem.ContainingProject
Dim config As Configuration = Proj.ConfigurationManager.ActiveConfiguration
Dim result(2) As Boolean
result(0) = False
result(1) = False
Dim parts = Split(dllFullPath, "\")
For Each part As String In parts
If part.ToLower() = "obj" Then
result(1) = True
End If
If part.ToLower() = config.ConfigurationName.ToLower() Then
result(0) = True
End If
Next
Return result
End Function
Sub RunNUnit()
Dim nunitUnitTestFiles = GetSolutionFiles("*test.dll")
Dim nunitIntegrationTestFiles = GetSolutionFiles("*integration.dll")
Dim unitTestsAndIntegrationTestFiles As New List(Of String)
unitTestsAndIntegrationTestFiles.AddRange(nunitUnitTestFiles)
unitTestsAndIntegrationTestFiles.AddRange(nunitIntegrationTestFiles)
For Each dll As String In unitTestsAndIntegrationTestFiles
Dim dllAttributes = GetDllCompilationAttributes(dll)
Dim debug = dllAttributes(0)
Dim obj = dllAttributes(1)
If debug AndAlso Not obj Then
RunNunitFile(dll)
End If
Next
End Sub
Sub RunCurrentProjectNUnit()
Dim ActiveDoc As Document = DTE.ActiveDocument
Dim Proj As Project = ActiveDoc.ProjectItem.ContainingProject
Dim config As Configuration = Proj.ConfigurationManager.ActiveConfiguration
Dim projectFileName = Proj.FullName
Dim projectPath = Path.GetDirectoryName(projectFileName)
Dim dllName = Proj.Name
If (Not projectPath.ToLower().EndsWith(".test")) Then
projectPath += ".Test"
dllName += ".Test"
End If
Dim testDllPath = String.Format("{0}\bin\{1}\{2}.dll", projectPath, config.ConfigurationName, dllName)
RunNunitFile(testDllPath)
End Sub
End Module
マクロ ウィンドウ (Alt+F8) に追加する場合は、コード ファイルに「NUnitExtensions」という名前を付ける必要があることを確認してください。その後、これらのマクロをたとえばツールバー ボタンとして追加できます。