2011年2月28日月曜日

EclipseでActivityを追加する方法

1、追加したいActivity用のクラスを作成する
Activityクラスを継承させる

2、AndroidManifestファイルを編集する
マニフェストエディタで開いて、下の方のApplication nodesに追加したクラスを追加

3、res\layoutフォルダにActivityを追加作成する

4、ついでに、元々あったActivityのファイル名を変える
activity_top と activity_nextを作る

ここでActivityのファイル名がおかしいとか言うエラーが出て良く分からず
調べたら、大文字は使用禁止の模様

ファイル名を直したら、又変なエラーが
「Unparsed aapt error(s)! Check the console for output」

これもググって解決

問題ウィンドウにあるエラー行を削除するだけ
変なエラーが消えずに残っているだけだった

5、実行しようとした所、ビルド時に「string.out.xml」とか言う分けわからないファイルが出来てエラーになる
パッケージエクスプローラーでstring.xmlを選択状態にしたまま実行(ビルド)すると出来るらしい



   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
   にほんブログ村

2011年2月27日日曜日

Android Layout Editorが表示されない

・問題
エクリプス(eclipse)のレイアウトエディターで、main.xmlに対してレイアウトを見ながら編集していた
テキストボックスとボタンを貼付け、ボタンのプロパティを編集しようと思ってダブルクリックしたら
テキストエディターが表示され、以後、何をしてもレイアウトエディターが表示されない



・解決策
ググって簡単解決
エディタの下の方を見ると、タブが分かれている事に気づく
タブの「Graphical Layout」を選択したら元に戻った
















   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
   にほんブログ村

2011年2月26日土曜日

Androidエミュレータのショートカットキー

Android SDKをインストールしたフォルダの、以下のファイルを確認する
docs\guide\developing\tools\emulator.html
ブラウザで開き、少し下に「Controlling the Emulator」とある
それがキーボードショートカット

・よく使うショートカット
Backボタン → ESCボタン
右へ回転(画面の縦横切替)、またはCtrl+F11
左へ回転(画面の縦横切替)、またはCtrl+F12



   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

2011年2月25日金曜日

エディットテキストに入力された値を取得する

テキスト入力欄に入力された文字列を取得し、トーストに表示してみた


・やり方
1、findViewByIdメソッドで, 指定したリソースインデックスのIDに対応したエディットテキストのインスタンスを取得する

2、getTextメソッドの戻り値を, Editableインタフェースを実装したSpannableStringBuilderクラスのオブジェクトとする

3、toStringメソッドを使って文字列を取得する
(リソースにテキストボックスとボタンを貼付け、テキストとボタンIDを変更しておく)

public class GetTextBoxActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn = (Button)findViewById(R.id.button_id);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                EditText edit = (EditText)findViewById(R.id.edittext_id);
                SpannableStringBuilder sp = (SpannableStringBuilder)edit.getText();
                Log.v("onCreate", sp.toString());

                // メソッドを作って1段かませる事。直接記述するとコンパイルエラーになる
                showToast(sp);
            }
        });
    }


    public void showToast(SpannableStringBuilder _sp){
        // 第3引数は、表示期間(LENGTH_SHORT、または、LENGTH_LONG)
        Toast.makeText(this, _sp.toString(), Toast.LENGTH_LONG).show();
    }
}


   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

Android 2.2で、自プロセスを終了する方法

 Androidはアプリを終了させてもプロセスは生き続けている
画面はアプリ終了に見えるがバックグラウンドで生きている
メモリがいっぱいになって来たらAndroidが自動的に開放する

その前に、自分で開放した方がいい

Android 2.1(API Level 7)までは「ActivityManager#restartPackage」で自プロセスを終了できた
Android 2.2(API Level 8)以降で新しく定義された「ActivityManager#killBackgroundProcesses」では自プロセスを簡単に終了できなくなった
自プロセスがActiveの場合は終了できない。できる方法があるのかもしれないがわからない
なので、アプリをバックグラウンドに移してから終了させる

・ホーム画面を表示するインテント(Action: Intent.ACTION_MAIN / Category: Intent.CATEGORY_HOME)を投げる
・ホーム画面が表示される程度にThread.sleepで待つ
・killBackgroundProcesses(getPackageName())を呼ぶ

・参考URL
http://frontallobe.kentauros.net/home/android



   ↓クリックで、このブログの評価が上がり執筆者が喜びます
 にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

2011年2月24日木曜日

AndroidでHelloWorld!(その2)

 画面にHelloWorldを表示する方法
「Hello World」を表示させようと思ったが別の文字列を表示してみる
1行だけだとおもしろくないので、改行させて複数行表示対応にする


デフォルトプログラムを書き換える


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }



    public void onCreate(Bundle savedInstanceState) {
        /* 文字列格納用変数 */
        String strTemp = "";


        super.onCreate(savedInstanceState);


        TextView display = new TextView(this);        //追加


        /* 画面に表示したい文字列作成 */
        strTemp = "そんな装備で大丈夫か?";           //追加
        strTemp = strTemp + "\n";                           //追加
        strTemp = strTemp + "大丈夫だ問題ない";     //追加


        /* TextViewに表示したい文字を設定 */
        display.setText(strTemp);                            //追加


        /* TextViewをContentViewに設定 */
        setContentView(display);                             //追加
        // setContentView(R.layout.main);                 削除
    }


テキストビューを作成し、そこに好きな文字を表示させる
ハローエルシャダイ











・参考URL
http://firespeed.org/diary2/read/read.php?diary=kenz-1096


   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

AndroidでHelloWorld!(その1)

AndroidでHelloWorld!(その1)

画面にHelloWorldを表示する方法
コードは一切書かない


1、プロジェクトの作成でAndroidプロジェクトを作成
    とりあえずVMはVer1.6で


2、プロジェクトのダイアログ(プロパティ設定)に必要事項を設定する
・Project name
  Eclipseのプロジェクト名。好き勝手につける
「HelloAndroid」

・Application name
  アプリケーションの名前。この名前でAndroid携帯に登録される
「Hello, Android!」

・Package name
  Javaのパッケージ名を指定。デフォルトパッケージは使用できないので、使用可能なパッケージ名を適当につければいい
「com.example.android.hello」

・Activity name
  Activityを継承するクラス名を指定。Activityはアプリのライフサイクルを管理するクラスで、Androidアプリでは必ず実装しなければならない
「HelloAndroid」


3、デバッグ実行するので、デバッグの構成を設定する
    事前にアンドロイド仮想環境を準備しておく事


4、設定項目と設定内容
・Androidタブ
  プロジェクト名:HelloAndroid
  LaunchDefaultActivity:有効

・ターゲットタブ
  Deployment Target Selection Mode:自動、とりあえずVer1.6選択



特に記述が無くても画面に「HelloWorld!」と表示される


・参考URL
http://www.atmarkit.co.jp/fsmart/articles/android01/android01_3.html



   ↓クリックで、このブログの評価が上がり執筆者が喜びます
 にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

2011年2月23日水曜日

Android環境構築方法(後編)

主にインストール後の設定


1:Android SDKのパスを通す
    ダウンロードしたファイルを解凍し、解凍されたフォルダを任意の場所におきます
    SDKがあるフォルダのパスを通す必要があります
    マイコンピュータを右クリックし[プロパティ]を選択して、[システムのプロパティ]を開く
    [詳細設定]タブをクリック
    [環境変数]ボタンをクリック
    [システム環境変数]リストの[Path]をクリック
    [システム環境変数]グループの[編集]ボタンをクリック
    [変数値]テキストボックスの末尾に「インストールフォルダ\tools」を追加


2:ADTを設定する
    Eclipseのメニューの[Windows]から[Preferences]を選択
    [Android]という項目が追加されています。[SDK Location]はAndroid SDKを展開したパスを指定


3:Android SDK and AVD Manager
    Eclipseのメニューの[Windows]から[Android SDK and AVD Manager]を選択
    左メニューのAvailable Packagesを選択
    Android Repositoryだけチェックし、これ以下を全部インストールする
    左メニューのVirtual deviceを作成する
        「Name」に、任意の名前(例えば「Android 1.6」)
        「Target」に、作成したいOSバージョン(例えば、「Android 1.6 - API Level 4」)を選択
        「SD Card」「Size」に、SDカードの容量(例えば、「64」)
        を入力後、「Create AVD」をクリックすると、作成した AVD の情報が表示されるので、「OK」をクリック


・参考
http://www.javadrive.jp/android/adt/index1.html
http://www.atmarkit.co.jp/fsmart/articles/android01/android01_2.html
http://uguisu.skr.jp/Windows/android/install.html
http://www.adakoda.com/android/000062.html


・アンドロイドエミュレータが起動できない場合
    1、WindowsのログインIDが日本語だった場合は起動に失敗する
          ログインIDをアルファベットオンリーにするかAVDフォルダをコピーする

        XPなら
        C:\Documents and Settings\{user}\.android\avd\

        Vista/7なら
        C:\users\{user}\.android\avd\

        に作成したAVD関連の設定ファイルとAVDのフォルダーがある
        AVDのフォルダーを適当なところへコピーさせて(漢字が含まれるフォルダーはダメ)
        次に、それに対応した(C:\Documents and Settings\{user}\.android\avd\ にある)iniファイル
        をコピー先に編集

    2、最後に、エミュを単独起動させる


・参考URL
http://lf36.blog136.fc2.com/blog-entry-49.html
http://team-pag.interprism.co.jp/member/noguchi/blog/2010/05/android-avd%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AF/


   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

Android環境構築方法(前編)

主にインストールする物の説明


・Android開発に必要なもの
1、JDK/JRE(Java開発環境)
2、Eclipse(日本語版)
3、Android SDK
4、Eclipse開発用のADT(Android Development Tools)


・実際インストールしたバージョン
[JDK/JRE]:Java6 Update 23
    http://www.oracle.com/technetwork/java/archive-139210.html

[Eclipse(日本語版)]:pleiades-e3.5-php-jre_20100226
    http://mergedoc.sourceforge.jp/
    (最初にPHPで開発しようと思ったのでこのバージョンだが、足りないプラグインがあると思う)

[Android SDK]:android-sdk_r10-windows
    http://developer.android.com/sdk/index.html

[ADT]:9.0.0.v201101191456-93220
    Eclipse上からダウンロードしてインストールする
    Eclipseのメニューの[Help]から[Software Updates]を選択
    [Software Updates and Add-ons]ダイアログで[Available Software]タブを選択し、[Add Site]ボタンをクリック
    [Location]に「https://dl-ssl.google.com/android/eclipse/」と入力しOKボタンをクリック
    「リポジトリが見つからない」というエラーメッセージが出たら下記のアドレスでAddSiteし直してみる
    [http://dl-ssl.google.com/android/eclipse/site.xml]
    一覧に[https~]と言うのがあったらゴミなので削除する
    追加したサイトにチェックを入れ、[Install]ボタンをクリック。インストール後は再起動


・参考URL
http://www.atmarkit.co.jp/fsmart/articles/android01/android01_2.html



   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

NUnitFormsの開発環境構築(その2)

NUnitFormsの開発環境構築(その2)
(前回とは違うパターンのソース記述)

・テストコード
1、テストコードのImportsに「NUnit.Extensions.Forms」を追加する
2、NUnitForms用のテストコードを書く   
    (今回はテストメソッドはPublicが1個、他はPrivateにする)
    (画面2個、メッセージボックス1個使用し、画面遷移する)
    何かフォームを2個作成する











    プロパティ類は特にいじらない


・ソリューション構成













・ソースコード
「Form1.vb」
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.ShowDialog()
    End Sub

End Class

「Form2.vb」
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show("TEST", "TITLE", MessageBoxButtons.OK)
    End Sub

End Class

「TestClass.vb」
Imports System
Imports System.Reflection
Imports System.Windows.Forms
Imports NUnit.Framework
Imports NUnit.Extensions.Forms


<TestFixture()> _
Public Class TestClass
    Inherits NUnitFormTest ' NUnitFormTestクラスからの継承

    ' これがないとうまくいかない
    Public Overrides ReadOnly Property UseHidden() As Boolean
        Get
            Return False
        End Get
    End Property


    ' 別ウィンドウを表示させる
    <[Test]()> _
    Public Sub Test()
        Dim target As Form1 = New Form1()
        target.Show()

        ' Form2は"Name"プロパティの値、クラス名がセットされる(VS2005)
        ExpectModal("Form2", "Form2Test")

        Dim button1 As ButtonTester = New ButtonTester("Button1")
        button1.Click()

        ' Assert. テスト内容
        target.Close()

    End Sub

    ' メッセージボックスを表示させる(Private)
    Private Sub Form2Test()

        ' TESTはメッセージボックスのキャプション
        ExpectModal("TITLE", "MsgBoxClickOk")

        ' Form2は"Name"プロパティの値、クラス名がセットされる(VS2005)
        Dim Form2 As FormTester = New FormTester("Form2")

        Dim button1 As ButtonTester = New ButtonTester("Button1", "Form2")
        button1.Click()

        ' Assert. テスト内容
        Form2.Close()
    End Sub


    ' メッセージボックスのメッセージを取得して正しいか確認(Private)
    Private Sub MsgBoxClickOk()
        Dim mbx As MessageBoxTester = New MessageBoxTester("TITLE")

        Assert.AreEqual("TEST", mbx.Text)
        ' TESTはメッセージボックスのキャプション
        mbx.ClickOk()
    End Sub

End Class

    画面を遷移させる時、次に開いた画面はNUnitForms側で認識しないらしい
    なので、次に開く画面をテスターに認識させる為の処理がいる
    ExpectModal("Form2", "Form2Test") ← 次に開く画面名称と、テストするメソッド名を指定する
    ExpectModal("TITLE", "MsgBoxClickOk") ← メッセージボックスの場合、タイトル名称とテストメソッド名を指定する


・参考URL
http://nunitforms.sourceforge.net/
http://www.atmarkit.co.jp/fdotnet/nagile/nagile03/nagile03_02.html
http://jinblog.at.webry.info/201003/article_2.html
http://jinblog.at.webry.info/201003/article_1.html
http://jinblog.at.webry.info/201003/article_3.html
http://blogs.yahoo.co.jp/dk521123/21717521.html



   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

2011年2月22日火曜日

NUnitFormsの開発環境構築(その1)

NUnitFormsの開発環境構築(その1)
(今回と次回に渡り2パターンのソースコードの書き方をメモしておく)

NUnitだと画面を使用しない単体テストだけのテストになってしまう。
これを使うと、画面を表示しての自動テストができるようになる。


・VisualStudio
使用バージョン:2005 Standard Edition


・NUnitForms
使用バージョン:不明(多分、.Net 2.0 NUnitForms alpha 5 release でいけるはず)
バージョン別ファイルが細かく存在するサイトでダウンしたので覚えてないしファイルにも書いてない
ダウンロードサイト:http://www.nunit.org/download.html
VS2005でプロジェクトが作成してあり、.NET2.0で動くNUnitFormsじゃないとまともに動かない。
なので、バージョンは2006年頃の古いものとなる。


・インストール手順
圧縮ファイルをダウンロード後、任意の場所に解凍。


・設定方法
1、解凍したフォルダを見るとソリューションファイルがあるので起動。
2、ビルドする。
3、できたNUnitFormsのDLLとそこに同伴されているNUnitのDLLを任意の場所に移す。最初にインストールしてあったNUnit-GUIのNUnit.framework.dllとはバージョンが違うので不整合を起しエラーが出て動かなくなるので、必ずNUnitFormsフォルダにあるNUnitForms用DLLとNUnit用DLLの2つをセットで使う事。後、ファイルは移さなくてもいいが管理しやすいように"Program Files"の下に専用フォルダを作った。
4、NUnitテストプロジェクトで参照設定した方法は使わない。プロジェクトの「参照の追加」からNUnitFormsと対になっているNUnitのDLLを追加する。間違っても.NETタブから選ばない事。

・NUnitFormsの使用例
[作成手順]
1、NUnitテストコードが書けるように設定しておく。
2、テストコードのImportsに「NUnit.Extensions.Forms」を追加する。
3、NUnitForms用のテストコードを書く
    (いつものようにテストメソッドは全部Publicにする)
    (画面は一つしか使用せず、画面遷移もしない)
    何かフォームを作成する













    主に使用するパーツのプロパティ
    [画面タイトル]
        Name:LoginForm
        Text:ログイン画面
    [テキストボックス]
        Name:txtUserName
        MaxLength:12
        Text:(空)
    [テキストボックス]
        Name:txtPassword
        MaxLength:16
        PassWordChar:*
        Text:(空)
    [ボタン]
        Name:btnLogin
        Text:ログイン
    [ボタン]
        Name:Button2
        Text:キャンセル
    [ラベル]
        Name:lblErrorMessage
        Text:(空)
        Visible:False









・ソリューション構成
 今回はプロジェクトを分けずに作った












・ソースコード
「LoginForm.vb」
Public Class LoginForm
    Private Sub LoginForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        lblErrorMessage.Visible = False
    End Sub


    Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
        lblErrorMessage.Visible = False
        If txtUserName.Text = "" Then
            lblErrorMessage.Visible = True
            lblErrorMessage.Text = "ユーザー名を入力してください。"
            Exit Sub
        End If
        If txtPassword.Text = "" Then
            lblErrorMessage.Visible = True
            lblErrorMessage.Text = "パスワードを入力してください。"
            Exit Sub
        End If
    End Sub
End Class

「LoginFormTest.vb」
Imports System
Imports System.Windows.Forms
Imports NUnit.Framework
Imports NUnit.Extensions.Forms
<TestFixture()> _
Public Class LoginFormTest
    Inherits NUnitFormTest ' NUnitFormTestクラスからの継承


    Dim loginForm As Form


    Public Overrides Sub Setup()
        MyBase.Setup()
        loginForm = New LoginForm()
        loginForm.Show()
    End Sub


    Public Overrides Sub TearDown()
        loginForm.Close()
        MyBase.TearDown()
    End Sub


    Public Overrides ReadOnly Property UseHidden() As Boolean
        Get
            Return False
        End Get
    End Property


    <[Test]()> _
    Public Sub ログインフォームのタイトル表示()
        Dim loginFormTester As FormTester = New FormTester("LoginForm")
        Assert.AreEqual("ログイン画面", loginFormTester.Text)
    End Sub


    <[Test]()> _
    Public Sub ユーザー名テキストボックスに設定されるべき値()
        Dim userNameTester As TextBoxTester = New TextBoxTester("txtUserName")
        Assert.AreEqual(String.Empty, userNameTester.Text)
        Assert.AreEqual(12, userNameTester("MaxLength"))
    End Sub


    <[Test]()> _
    Public Sub パスワードテキストボックスに設定されるべき値()
        Dim passwordTester As TextBoxTester = New TextBoxTester("txtPassword")
        Assert.AreEqual(String.Empty, passwordTester.Text)
        Assert.AreEqual(16, passwordTester("MaxLength"))
        Assert.AreEqual(Char.Parse("*"), passwordTester("PasswordChar"))
    End Sub


    <[Test]()> _
    Public Sub エラーメッセージラベルに設定されるべき値()
        Dim errorMessageLabelTester As LabelTester = New LabelTester("lblErrorMessage")
        Assert.IsFalse(CBool(errorMessageLabelTester("Visible")))
    End Sub


    <[Test]()> _
    Public Sub ユーザー名を入力しないとログインできない()
        Dim loginButtonTester As ButtonTester = New ButtonTester("btnLogin")
        loginButtonTester.Click()
        Dim errorMessageLabelTester As LabelTester = New LabelTester("lblErrorMessage")
        Assert.IsTrue(CBool(errorMessageLabelTester("Visible")))
        Assert.AreEqual("ユーザー名を入力してください。", errorMessageLabelTester.Text)
    End Sub


    <[Test]()> _
     Public Sub パスワードも入力しないとログインできない()
        Dim userNameTester As TextBoxTester = New TextBoxTester("txtUserName")
        Keyboard.UseOn(userNameTester)
        Keyboard.Click(Key.U)
        Keyboard.Click(Key.S)
        Keyboard.Click(Key.E)
        Keyboard.Click(Key.R)
        Keyboard.Click(Key.DIGIT_1)
        Dim loginButtonTester As ButtonTester = New ButtonTester("btnLogin")
        loginButtonTester.Click()
        Dim errorMessageLabelTester As LabelTester = New LabelTester("lblErrorMessage")
        Assert.IsTrue(CBool(errorMessageLabelTester("Visible")))
        Assert.AreEqual("パスワードを入力してください。", errorMessageLabelTester.Text)
    End Sub
End Class

・参考URL
http://nunitforms.sourceforge.net/
http://www.atmarkit.co.jp/fdotnet/nagile/nagile03/nagile03_02.html
http://jinblog.at.webry.info/201003/article_2.html
http://jinblog.at.webry.info/201003/article_1.html
http://jinblog.at.webry.info/201003/article_3.html
http://blogs.yahoo.co.jp/dk521123/21717521.html


   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

2011年2月21日月曜日

TestDriven.NETの開発環境構築

NUnit(GUI)は専用ツールを使用し、VSSとの親和性が低い。デバッグもできない。
TestDriven.NETならVSS上でステップ実行しながらテストコードを流していける。


・VisualStudio
使用バージョン:2005 Standard Edition


・TestDriven.NET
使用バージョン:TestDriven.NET-3.0.2749_Personal
ダウンロードサイト:http://www.testdriven.net/download.aspx
通常は有料だが、よくある話で個人利用は無料・・・と思う。
有料版と無料版があったはずなので無料版をダウンロード。


・インストール手順
ダウンロード後、インストールの実行。以上。


・設定方法
1、特に設定はいらない


・使用方法
1、ビジュアルスタジオを起動
2、NUnitでテストプロジェクトを作成しテスト実行がうまくいく事を確認
3、ソリューションエクスプローラから、テストプロジェクト名で右クリック、ポップアップメニューから「Run Test」




















4、デバッグでステップ実行したい時は、同メニューの「Test With」から「Debugger」を選択





















5、カバレージもできる
6、実行結果はVSSの「出力ウィンドウ」に出る。成功したら1行だけ出る。失敗したらエラーメッセージとともに結果が出る。










・参考URL
http://www.infoq.com/jp/news/2010/06/TestDriven.NET
http://www.tdd-net.jp/2009/08/testdrivennet-c.html
http://www.crystal-creation.com/software/technical-information/tool/test/test-driven-net/
http://www.atmarkit.co.jp/fdotnet/tools/nunit22_02/nunit22_02_01.html
http://note.miyabis.jp/article/30880692.html
http://mag.autumn.org/Content.modf?id=20031215160548


   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

2011年2月20日日曜日

NUnitの開発環境構築

今、VB.NETで使用しているテストツール
VBだけじゃなくビジュアルスタジオで「.Net」開発する時に使う


・環境
[VisualStudio]
使用バージョン:2005 Standard Edition

[Nunit]
使用バージョン:NUnit-2.5.4.10098
ダウンロードサイト:http://www.nunit.org/download.html
現時点で、最新バージョンは「NUnit-2.5.9.10348」だが、なぜ2.5.4を落としたのかは忘れた。
問題なく動いているのでヨシ!


・インストール手順
ダウンロード後、インストールの実行。以上。


・設定方法
1、ビジュアルスタジオを起動
2、何かプロジェクトを作成(既存のプロジェクトでも可)
3、メニューバーの「プロジェクト」 → 「参照の追加」を選択
4、.NETタブの中を検索し”Nunit.framework”を選択

-----------------

NUnitの使用例 

・作成手順
1、本番で使用するWindowsアプリケーションプロジェクトとして用意
2、テスト用にクラスライブラリプロジェクトを用意
3、二つのプロジェクトを1つのソリューションに統合する
    a)ソリューションエクスプローラーのソリューション名で右クリック
    b)既存のプロジェクトを追加(プロジェクト名ではなくexeを直接指定する事)








4、クラスライブラリにテストコードを記述していく


・注意点
Publicのメソッドに対してテストするのが一般的だと思われ
Privateのメソッドに対してもテストできるが記述が少し面倒になるし、よくわからん


・前提条件
アプリの名称:Client_App
ファイル名:Client_App.vb
フォームには何のパーツも追加しない



















 ・ソリューション構成













・ソースコード
テストコードのメソッド名は日本語で書いたほうが分かりやすい。
メソッド名の一覧が仕様書になる。

 「Client_App.vb」
Public Class Client_App
    Private Sub Client_App_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim recorder As MaxDataSizeRecorder = New MaxDataSizeRecorder()
        Dim aaa As String
        aaa = ""
   End Sub
End Class

 「MaxDataSizeRecorder.vb」
Public Class MaxDataSizeRecorder
    Public Name As String = "NoName"
    Public Point As Integer = 0

    Public Sub SetPoint(ByVal _name As String, ByVal _point As Integer)
        If Me.Point >= _point Then
            Exit Sub
        End If
        Me.Name = _name
        Me.Point = _point
    End Sub

    Public Function IsHighest(ByVal _point As Integer) As Boolean
        Return Me.Point < _point
    End Function
End Class

 「MaxDataSizeRecorderTest.vb」
Imports NUnit.Framework
Imports Client_App

<TestFixture()> _
Public Class 積算入力画面テスト
    <Test()> _
    Public Sub コンストラクタ()
        Dim recorder As MaxDataSizeRecorder = New MaxDataSizeRecorder()
        Assert.AreEqual("NoName", recorder.Name, "recorder.Name")
        Assert.AreEqual(0, recorder.Point, "recorder.Point")
   End Sub

    <Test()> _
    Public Sub ポイントの設定()
        Dim recorder As MaxDataSizeRecorder = New MaxDataSizeRecorder()
        recorder.SetPoint("Taro", 1234)
        Assert.AreEqual("Taro", recorder.Name, "recorder.Name" & " = Taroになってないよ?")
        Assert.AreEqual(1234, recorder.Point, "recorder.Point")
        recorder.SetPoint("Jiro", 1233)
        Assert.AreEqual("Taro", recorder.Name, "recorder.Name")
        Assert.AreEqual(1234, recorder.Point, "recorder.Point")
        recorder.SetPoint("Saburo", 1235)
        Assert.AreEqual("Saburo", recorder.Name, "recorder.Name")
        Assert.AreEqual(1235, recorder.Point, "recorder.Point")
    End Sub

    <Test()> _
    Public Sub 最大値比較テスト()
        Dim recorder As MaxDataSizeRecorder = New MaxDataSizeRecorder()
        recorder.SetPoint("Taro", 1234)
        Assert.AreEqual(True, recorder.IsHighest(1235), "recorder.IsHighest(1235)")
        Assert.AreEqual(True, Not recorder.IsHighest(1234), "!recorder.IsHighest(1234)")
        Assert.AreEqual(True, Not recorder.IsHighest(1233), "!recorder.IsHighest(1233)")
    End Sub
End Class


   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村