【Elixir】Visual Studio CodeとExUnitを連携させて失敗ケースを一覧表示、ジャンプ、マークする
6957 ワード
ゴール
-
- エディタ内でテスト実行、結果表示を完結(画像右側)。
- 失敗ケースの宣言行にマーク(画像左側)。
- マウスオーバーによるメッセージの表示。
- できていないこと
- アサーションに失敗した行番号の情報取得、紐付け。
- 不具合?
- たまにテスト実行が行われず、マークだけ消えることがある。
- Outputを見れば一目瞭然なので気付くことはできる。
想定
- Visual Studio CodeとExUnitの基本的な使い方を知っており、セットアップ済み。
- エディタ内で完結する形で、ExUnitとの連携を試してみたい人向け。
- 所要時間3~5分。
書いた人の環境
- Windows 10
- Visual Studio Code 0.10.6
- Elixir 1.1.0
- Web Installerでセットアップ。
前提
- プロジェクトのルートディレクトリで
$ mix test
が正しく実行できる。
-
$ mix new
でプロジェクト作成していれば多分OK。
- ExUnitの出力形式などを変更していない。
- Elixirをセットアップしたままの状態ならOK。
- Visual Studio Codeでプロジェクトのルートディレクトリを開いている。
試す
- プロジェクトのルートに生成される
.vscode
フォルダの中にある、 tasks.json
ファイル(UTF-8)を、以下の内容で全て上書きする。
.vscode/tasks.json
{
"version": "0.1.0",
"command": "mix",
"isShellCommand": true,
"showOutput": "always",
"tasks": [
{
"taskName": "test current",
// Assign this task as "Test Task". Ctrl+Shift+T (default) to run.
"isTestCommand": true,
"suppressTaskName": true,
"args": [
"test",
"${file}"
],
"echoCommand": true,
"problemMatcher": {
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": [
{
"regexp": "\\s*\\d+\\).*\\(.*\\)$"
},
{
"regexp": "\\s+([^:]*):(\\d*)$",
"file": 1,
"line": 2
},
{
"regexp": "^\\s+(.*)$",
"message": 1
}
]
}
}
]
}
- 何かしらのアサーションが失敗するようにしておく。
- テストコードのファイルを開いているエディタをアクティブにする。
-
Ctrl+Shift+T
あるいは Ctrl+P
で表示されるパレットにtask test current
と入力すると、アクティブなエディタで開いているファイルのパスを渡してテストが実行される。
- 終わるまで眺める。
-
をクリックするか、
Ctrl+Shift+M
で失敗箇所の一覧が表示される。
- 項目を選択すると、当該ファイルの失敗行にジャンプする。
- 失敗行は赤線が表示され、スクロールバーの該当位置に赤い四角が表示される。
- 修正して再度テストを実行すると、アンダーラインが消える。
- Enjoy!
テストを全件実行したい
.vscode/tasks.json
// (省略)
"args": [
"test",
"${file}"
],
// (省略)
- エディタ内でテスト実行、結果表示を完結(画像右側)。
- 失敗ケースの宣言行にマーク(画像左側)。
- マウスオーバーによるメッセージの表示。
- アサーションに失敗した行番号の情報取得、紐付け。
- たまにテスト実行が行われず、マークだけ消えることがある。
- Outputを見れば一目瞭然なので気付くことはできる。
- Visual Studio CodeとExUnitの基本的な使い方を知っており、セットアップ済み。
- エディタ内で完結する形で、ExUnitとの連携を試してみたい人向け。
- 所要時間3~5分。
書いた人の環境
- Windows 10
- Visual Studio Code 0.10.6
- Elixir 1.1.0
- Web Installerでセットアップ。
前提
- プロジェクトのルートディレクトリで
$ mix test
が正しく実行できる。
-
$ mix new
でプロジェクト作成していれば多分OK。
- ExUnitの出力形式などを変更していない。
- Elixirをセットアップしたままの状態ならOK。
- Visual Studio Codeでプロジェクトのルートディレクトリを開いている。
試す
- プロジェクトのルートに生成される
.vscode
フォルダの中にある、 tasks.json
ファイル(UTF-8)を、以下の内容で全て上書きする。
.vscode/tasks.json
{
"version": "0.1.0",
"command": "mix",
"isShellCommand": true,
"showOutput": "always",
"tasks": [
{
"taskName": "test current",
// Assign this task as "Test Task". Ctrl+Shift+T (default) to run.
"isTestCommand": true,
"suppressTaskName": true,
"args": [
"test",
"${file}"
],
"echoCommand": true,
"problemMatcher": {
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": [
{
"regexp": "\\s*\\d+\\).*\\(.*\\)$"
},
{
"regexp": "\\s+([^:]*):(\\d*)$",
"file": 1,
"line": 2
},
{
"regexp": "^\\s+(.*)$",
"message": 1
}
]
}
}
]
}
- 何かしらのアサーションが失敗するようにしておく。
- テストコードのファイルを開いているエディタをアクティブにする。
-
Ctrl+Shift+T
あるいは Ctrl+P
で表示されるパレットにtask test current
と入力すると、アクティブなエディタで開いているファイルのパスを渡してテストが実行される。
- 終わるまで眺める。
-
をクリックするか、
Ctrl+Shift+M
で失敗箇所の一覧が表示される。
- 項目を選択すると、当該ファイルの失敗行にジャンプする。
- 失敗行は赤線が表示され、スクロールバーの該当位置に赤い四角が表示される。
- 修正して再度テストを実行すると、アンダーラインが消える。
- Enjoy!
テストを全件実行したい
.vscode/tasks.json
// (省略)
"args": [
"test",
"${file}"
],
// (省略)
- Web Installerでセットアップ。
- プロジェクトのルートディレクトリで
$ mix test
が正しく実行できる。-
$ mix new
でプロジェクト作成していれば多分OK。
-
- ExUnitの出力形式などを変更していない。
- Elixirをセットアップしたままの状態ならOK。
- Visual Studio Codeでプロジェクトのルートディレクトリを開いている。
試す
- プロジェクトのルートに生成される
.vscode
フォルダの中にある、 tasks.json
ファイル(UTF-8)を、以下の内容で全て上書きする。
.vscode/tasks.json
{
"version": "0.1.0",
"command": "mix",
"isShellCommand": true,
"showOutput": "always",
"tasks": [
{
"taskName": "test current",
// Assign this task as "Test Task". Ctrl+Shift+T (default) to run.
"isTestCommand": true,
"suppressTaskName": true,
"args": [
"test",
"${file}"
],
"echoCommand": true,
"problemMatcher": {
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": [
{
"regexp": "\\s*\\d+\\).*\\(.*\\)$"
},
{
"regexp": "\\s+([^:]*):(\\d*)$",
"file": 1,
"line": 2
},
{
"regexp": "^\\s+(.*)$",
"message": 1
}
]
}
}
]
}
- 何かしらのアサーションが失敗するようにしておく。
- テストコードのファイルを開いているエディタをアクティブにする。
-
Ctrl+Shift+T
あるいは Ctrl+P
で表示されるパレットにtask test current
と入力すると、アクティブなエディタで開いているファイルのパスを渡してテストが実行される。
- 終わるまで眺める。
-
をクリックするか、
Ctrl+Shift+M
で失敗箇所の一覧が表示される。
- 項目を選択すると、当該ファイルの失敗行にジャンプする。
- 失敗行は赤線が表示され、スクロールバーの該当位置に赤い四角が表示される。
- 修正して再度テストを実行すると、アンダーラインが消える。
- Enjoy!
テストを全件実行したい
.vscode/tasks.json
// (省略)
"args": [
"test",
"${file}"
],
// (省略)
.vscode
フォルダの中にある、 tasks.json
ファイル(UTF-8)を、以下の内容で全て上書きする。
.vscode/tasks.json
{
"version": "0.1.0",
"command": "mix",
"isShellCommand": true,
"showOutput": "always",
"tasks": [
{
"taskName": "test current",
// Assign this task as "Test Task". Ctrl+Shift+T (default) to run.
"isTestCommand": true,
"suppressTaskName": true,
"args": [
"test",
"${file}"
],
"echoCommand": true,
"problemMatcher": {
"owner": "elixir",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": [
{
"regexp": "\\s*\\d+\\).*\\(.*\\)$"
},
{
"regexp": "\\s+([^:]*):(\\d*)$",
"file": 1,
"line": 2
},
{
"regexp": "^\\s+(.*)$",
"message": 1
}
]
}
}
]
}
Ctrl+Shift+T
あるいは Ctrl+P
で表示されるパレットにtask test current
と入力すると、アクティブなエディタで開いているファイルのパスを渡してテストが実行される。Ctrl+Shift+M
で失敗箇所の一覧が表示される。
.vscode/tasks.json
// (省略)
"args": [
"test",
"${file}"
],
// (省略)
ここを
.vscode/tasks.json
// (省略)
"args": [
"test"
],
// (省略)
に変更。
Output出したくない
.vscode/tasks.json
// (省略)
"showOutput": "always",
// (省略)
.vscode/tasks.json
// (省略)
"showOutput": "always",
// (省略)
ここを
.vscode/tasks.json
// (省略)
"showOutput": "silent",
// (省略)
に変更。
書いていないこと
- Visual Studio Codeの詳しい設定方法
- Task
- Problem Matcher
- 標準出力を正規表現でパースすることで、警告やエラーなどを検知して通知する仕組み
- https://code.visualstudio.com/Docs/editor/tasks#_defining-a-problem-matcher
- Task
- Problem Matcher
- 標準出力を正規表現でパースすることで、警告やエラーなどを検知して通知する仕組み
- https://code.visualstudio.com/Docs/editor/tasks#_defining-a-problem-matcher
Author And Source
この問題について(【Elixir】Visual Studio CodeとExUnitを連携させて失敗ケースを一覧表示、ジャンプ、マークする), 我々は、より多くの情報をここで見つけました https://qiita.com/iery/items/d6c7db088c3496bb765f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .