The Art of Unit Testing: with examples in C# 2

The Art of Unit Testing: With Examples in C#

The Art of Unit Testing: With Examples in C#

 

CHAPTER 2. A first unit test

NUnitの基本的な使い方

・[SetUp], [TearDown], [TestCase]

・Assertクラス

・1つのクラスに対して1つのテストクラス

個人的な気付き

・[SetUp]の代わりにFactoryメソッドを使うことで可読性、メンテナンス性が増す。後でコンストラクタに変更がある場合でも、Factoryメソッドを一カ所修正すれば済む。

・[TearDown]はシステムテストの兆候なので、なるべく使わない。

・[ExpectedException]は意図しない箇所で発生した例外を検知してテストをパスすることがあるので、代わりにAssert.Catchを使う。

・テストメソッドの命名規則として"[UnitOfWork]_[Scenario]_[ExpectedBehavior]"というのが紹介されている。ただテストメソッドは無理して英語にせず「日本語テストメソッド」を使う方が良いと思っている。

「日本語テストメソッド」については下記の記事を参考に:

これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE

 ・単純にNUnitの使い方を学びたいなら、古い書籍だが下記が参考になる。

Microsoft.NETでのテスト駆動開発

Microsoft.NETでのテスト駆動開発

 

 

The Art of Unit Testing: with examples in C# 1

The Art of Unit Testing: With Examples in C#

The Art of Unit Testing: With Examples in C#

 

ユニットテストをもっと上手く書けるようになりたいので、この本を手に取った。サンプルコードが.NETというのも良い。この書籍は元々The Art of Unit Testing: With Examples in .netを改題、加筆修正を加えたもの。フィジカルコピーで購入したが、付録として電子書籍のチケット(PDF, ePub, Kindle)も収録している。

備忘のため、要点を少しずつ書き留める。

CHAPTER 1. The basic of unit tesing

・優れたユニットテスト特性

ユニットテストの定義

・TDDを成功させる3つのスキル

第一章での個人的な気づきは、ユニットテストの対比としてシステムテスト(integration tests)について述べた下記の一節。

私は高速でなく、一貫性もなく、1つ以上の依存関係を持つテストは、どのようなテストもシステムテストであるとみなしている。例えば、もしテストが実際の時間、ファイルシステム、データベースを使用しているならば、 システムテストの領域に踏み込んでしまっている。

エンジニアとしての生き方

エンジニアとしての生き方  IT技術者たちよ、世界へ出よう! (インプレス選書)

エンジニアとしての生き方  IT技術者たちよ、世界へ出よう! (インプレス選書)

連休中に読みました。全体的に刺激的で、もっと勉強したいなと思わされる。自分が普段考えていることにすごく近いなと思ったのは下記の一節。

「自分がやりたいこと」と「会社にとって必要なこと」のベクトルを合わせる

別の言い方をすれば、「楽しんで、かつ、会社の業績に貢献する」ために自分がなにをしなければならないかを常に意識して働いた方が良いということ。

コードコンプリート

Code Complete第2版〈上〉―完全なプログラミングを目指して

Code Complete第2版〈上〉―完全なプログラミングを目指して

読みました。もっと若いうちに読んでおきたかった。コーディングスタイルとか変数の命名とか、似たようなトピックは今まで読んだ本にも出てきたけれど、これが原典になるのかな。自分が普段なんとなくやっていたことも改めて意識づけできて良いなと思いました。疑似コードプログラミングとか。あとこの本をハブにして、紹介されている本をあたっていくのも面白いなと感じました。個人的にはデザインパターン勉強したい。近いうちに下巻も読みます。

自分が今就いているジョブにあまりのめり込めないとか、なかなかお手本になる人がいないとか、日々悶々としている人がいたら、技術書を読んでみるのもけっこう良いんじゃないかと思う。

MacでPython開発の準備

 2014/01/08追記

本記事ではEclipseを使用したPython開発環境の説明をしていますが、今はPyCharmを使っています。Community Editionは無償なのでこちらの使用を検討してください。

Download JetBrains Python IDE :: PyCharm

 

動機

自分が今までほとんど経験がないLLに触れてみようということと、『達人プログラマー』の毎年一つは新しい言語を学習しようというのに触発され、Pythonをやってみることにしました。

開発環境の準備

今回はMacで開発環境を準備するところから。Eclipseのインストールと、EclipsePython開発用のプラグインであるPyDevのインストールをします。

自環境はMac OS X 10. 7. 5です。

 

ざっくりと

Eclipse本体のダウンロード

Eclipseの日本語化

Aptana studio3をElipseにインストール

 

これでEclipsePythonの開発ができます。Python自体はMacにプリインストールされています。Aptana studio 3ですが、インストールすることでPyDevも一緒にインストールされます。詳しい手順は以下に記します。

 

 Eclipse本体のダウンロード

まずはEclispe公式からEclipse本体(4.2.2)をダウンロードします。

http://www.eclipse.org/downloads/

 解凍したEclipseは好きなフォルダに置いてかまいません。 

 

Eclipseの日本語化

Eclipse日本語化プラグインPleiadesをダウンロードします。下記URLからプラグイン・ダウンロードを選択します。

 
なお、Windowsで開発を行う場合はEclipsePleiadesをそれぞれを個別にダウンロードする必要はなく、PleiadesのサイトからAll in Oneを選べばよいはずです。
 DLしたファイルを解凍するとplugins, featuresのフォルダが中にあるので、それぞれの中身をEclipseのplugins, featuresの中にコピーします。
 

Pleiadesを適用する 

日本語化したEclipseを使うにはeclipse.iniを編集する必要があります。Eclipse.appを右クリックして「パッケージの内容を表示」を選択すると中が見られるので、Contents/MacOS/eclipse.ini を編集します。
 下記の1行を追加します。
 
-javaagent:../../../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
 
Eclipseを起動してみると、日本語化が完了しています。
 

Aptana Studio 3のダウンロード

Aptana Studio 3にはPyDevが含まれているため、PyDevをあらためてインストールする必要はありません。(自分はAptana Studio 3より先にPyDevをインストールしてしまったため、PyDevを一度アンインストールするはめに・・・。)
 
下記URLでEclipse Plug-in Versionを選択します。
 するとページに下記のURLが表示されると思うので、このURLを使ってEclipseプラグインをインストールします。
Eclipseを起動 [ヘルプ - 新規ソフトウェアのインストール]
「作業対象」に上記のURLを入力します。
するとプラグインの一覧が表示されるのでガイダンスに従ってインストールを実施します。
 

f:id:enmtknt:20130629103430p:plain

 

Pythonのパスを設定

EclipsePythonのパスを設定します。
[Eclipse - 環境設定 - PyDev - インタープリター - Python インタープリター - 自動構成]

f:id:enmtknt:20130629103506p:plain

 
 
これでPythonの開発環境の準備が完了しました。
 

参考にした記事:

MacEclipsePleiades
 
EclipseとPydevでpython開発環境を整えてみる