プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2017/02/22

.git/index.lock があるよと言われたら

event_note

Git で pull や checkout を行おうとした際、以下のメッセージが表示されて実行できなかったことがありました。

fatal: Unable to create '/hoge/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

.git の中に index.lock があるので処理できないと言われています。
なので、とりあえずこれを手動で削除すれば実行できるようになるはずです。

しかし、私の場合、この現象が pull を途中で終了したことで起きるようになったせいか、中途半端にゴミのファイルが残ってしまい、いくるかのファイルの上書きができなくなって pull も checkout もできないままだったので、結局 clone し直しました。

2017/02/21

プロジェクトはこのソリューション構成に対してビルドするように選択されていません。

event_note

Visual Studio 2015 で WPF のアプリケーションを開発していると、以下のメッセージが表示されてビルドがスキップされてしまうことがありました。

「プロジェクトはこのソリューション構成に対してビルドするように選択されていません。」

解決方法

メニューバーから [ビルド] > [構成マネージャー] を選択します。
すると構成マネージャーの画面が表示されるので、該当のプロジェクトの「ビルド」にチェックを入れるとビルドできるようになります。

2017/02/18

MSTest の導入

event_note

「テストコードのないコードはレガシーコードだ」というのはよく聞く話ですが、恥ずかしながら私もずっとテストコードを書く文化のない環境で働いてきたため、テストコードというものを書いたことがありません。

さすがにこのままではまずいと思い、C# で書いたコードでは MSTest でユニットテストを行う癖をつけたいと思いました。
というわけで、MSTest の導入方法です。
本当に最初の最初の導入方法について書いただけですが・・・。

テストプロジェクトの作成

まずはソリューション内にテストを行うためのプロジェクトを作成するようです。
MSDN よれば、1つのプロジェクトに対して1つのテストプロジェクトを作成するのが基本のようですね。
ソリューション内にプロジェクトが2つあれば、それぞれに対応するテストプロジェクトを作成(テストプロジェクトを2つ作成)するということですね。

テストプロジェクトの作成方法には2つの方法があるようです。

  • 手動で新規にテストプロジェクトを作成する
  • メソッドからテストプロジェクトを作成する

前者の「手動で新規にテストプロジェクトを作成する」方法は、

  1. チームエクスプローラーでソリューションを右クリック
  2. [追加] > [新しいプロジェクト] を選択
  3. サイドバーで [Visual C#] > [テスト] を選択
  4. [単体テストプロジェクト] を選択

で、作成できます。
ただ、後者のメソッドから作成する方法のほうが楽なんじゃないかと思いました。

「メソッドからテストプロジェクトを作成する」方法は、

  • テストしたいメソッド名の上で右クリック > [単体テストの作成] を選択

とするだけです。
すると以下のような画面が表示されます。

テストフレームワークは MSTest を選択します。
テストプロジェクトは「新しいテストプロジェクトを」を選択します。
既にテストプロジェクトを作成していればそのプロジェクトを選択することもできます。
とりあえずこれで作成してみます(他の項目は追々勉強していきます)。
するとテストプロジェクトとテストメソッドが作成されます。

一応注意点として、テストを作成するためにはクラスとメソッドが public でなければなりません。
(private なメソッドをテストする方法もあるみたいですが・・・。)

で、作成されたコードを見ればわかりますが、

  • テストプロジェクトの名前は「テストするプロジェクトの名前 + Tests」
  • テストプロジェクトの名前空間は「テストするプロジェクトの名前.Tests」
  • テストクラスの名前は「テストするクラスの名前 + Tests」
  • テストメソッドの名前は「テストするメソッドの名前 + Test」

になるようですね。
MSDN でもこの標準の名前付け規則を採用することをお勧めするとあります。

テストの実行方法

メニュバーから [テスト] を選択 > [実行] > [すべてのテスト]
で、とりあえずテストが実行でき、テスト結果がテストエクスプローラーに表示されます。

また、エディタ内で右クリック > [テストの実行] でもテストが行えます。
このとき、右クリックした位置で以下のように変わるようです。

  • クラス内で右クリック > [テストの実行]:クラス内のすべてのテストメソッドを実行
  • テストメソッド内で右クリック > [テストの実行]:そのテストメソッドのみを実行

テストコードの書き方はまた追々書きます。

参考URL

2017/02/16

NLog のインストール

event_note

2017/02/15

HtmlAgilityPack のインストール

event_note

2017/02/14

LibGit2Sharp のインストール

event_note

2017/02/13

MahApps.Metro のインストールと基本設定

event_note

2017/02/06

VSCode を 1.9 にバージョンアップすると拡張機能が動作しなくなった

event_note

Visual Studio Code の 1.9 の更新案内が来ていたのでアップデートしたら、拡張機能が全て動作しなくなりました。
拡張機能の再インストールなども試してみましたが直らず。
Visual Studio Code 自体を一度アンインストールして 1.8.1 を再インストールすれば多分直ると思うのですが、面倒です。
PlantUML やら reStructuredText のライブプレビューの拡張機能とかは動かないとかなり困るのですが、Github の Issue を確認すると報告が上がっていたので、とりあえず待つしかないですね。