投稿者のアーカイブ
Windows 64bit版でAccess2000を使った時のODBC
先月、開発用のマシンが壊れてWindows7の64bitになりました。
この64bitで苦戦したので忘れないうちにメモ。
現在やっている作業でAccess2000の環境を整えることになり、PostgreSQLのODBCが必要に。
ドライバをインストールしてODBCアドミニストレータでDSNを作成し、
テーブルのリンクをしようと一覧から作成したDSNを選択したのですが、エラーが出て出来ない…。
その場で作成したらどうなるか?と思って新規作成をしてみると、
そもそもドライバ一覧の中にPostgresSQLがない…。
原因はドライバが64bit、Accessが32bit対応だからでした。
対処方法としては32bit版のドライバをインストールすれば良いのですが、
ODBCアドミニストレータを普通に起動すると64bit版が立ちあがってしまうので
C:\WINDOWS\SysWOW64\odbcad32.exe
から32bit版を起動してDSN作成。
先ほどと同じようにテーブルのリンクをしてみると、エラーもなく出来ました。
Popularity: 9% [?]
VS2010+NUnit2.5.10でテストメソッドをデバッグ
VB.NET+NUnitで開発をしていますが、テストをしてもメソッドの戻り値しか確認できず不便だったので、テストメソッドもデバッグできるようにしました。
1.
ソリューションのプロパティからスタートアッププロジェクトをテストプロジェクトに変更。
マルチスタートアップでも可。
2.
テストプロジェクトのプロパティを開いてデバッグの開始動作を[外部プログラムの開始]に変更。
ファイル選択からnunit.exeを指定。
3.
開始オプションのコマンドライン引数にテストプロジェクトのdllを指定。
これでできるはずだったのですが、起動はしてもブレークポイントに反応してくれません。
調べてみると、
[VS2010][NAgile] VisualStudio2010 Express + NUnit でDebug実行ができない場合
こちらのページを発見しました。
どうやら.NET Framework 4.0だとデバッグ実行ができないみたいです。
なので上のページを参考にさせていただいて、nunit.exe.configを編集。
4.
nunit.exe.configのconfiguration内に下の3行を追加。
<startup> <requiredRuntime version="4.0.30319" /> </startup>
上書きして実行してみると、ちゃんとブレークポイントに反応するようになりました!
Popularity: 8% [?]
VB.NETのMy.Application.Logを使う
My.Application.Logを使用してトレースする、ログに書き込む
で詳しく説明されているのでメモ程度で。
まず、My.Application.Logを使うためにアプリケーション構成ファイルであるapp.configを編集します。(ない場合は[プロジェクト] > [新しい項目の追加]からアプリケーション構成ファイルを選択)
app.configがプロジェクトに追加された時点でMy.Application.Logに関する記述があるので楽です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- このセクションでは、My.Application.Log のログ構成を定義します。 --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- アプリケーション イベント ログに書き込むには、以下のセクションのコメントを解除します --> <!--<add name="EventLog"/>--> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> <!-- アプリケーション イベント ログに書き込むには、以下のセクションのコメントを解除して、APPLICATION_NAME をアプリケーション名に置き換えます --> <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> --> </sharedListeners> </system.diagnostics> </configuration> |
しかし、このまま何も触らずにプログラム内で
1 2 3 4 | My.Application.Log.WriteEntry("コントロールの初期化") 'Try~Catch内などで My.Application.Log.WriteException(New Exception("エラー!")) |
とするだけでも
1 2 | DefaultSource Information 0 コントロールの初期化 DefaultSource Error 2 エラー! |
と出力され使うことができます。
ちなみに出力先のデフォルトは
ユーザーのApplication Dataフォルダ\CompanyName\ProductName\ProductVersion\ProductName.log
ですが、Vista以降はフォルダ構成が変わっているので
ユーザーのAppData\Roaming\CompanyName\ProductName\ProductVersion\ProductName.log
になっています。
Popularity: 14% [?]
VB2010でNUnit2.5を利用する
初めまして、miyazakiです。今年からこちらでお世話になることになりました。よろしくお願いします!
初めての投稿なのでものすごく緊張していますが、さっそく本題に入っていきたいと思います。
VB.NETの環境でNUnitを使うことになったので入れてみました。
参考ページ
NUnit 2.5 の導入 Step by Step
VB2010 Express + NUnit 2.5 で、 初めてのTDD Step by Step
参考にしたページと同じ環境だったのと、とても詳しく分かりやすく書かれていたので、インストールから動かしてみるまでサクサク進めました。
なのでこちらではメモ程度に書いていきたいと思います。
まずはインストール。
NUnitのページのDOWNLOADから”NUnit-2.5.10.11092.msi”をクリックしインストール。
インストールすると中にサンプルが入っているので、とりあえずそちらを動かしてみることにします。
ソリューションを開くと、このプログラム古いから今の環境で動くようにしろ、と言われるので指示に従ってコンバート。
コンバートして開けたところでビルドするんですが、元が古いということでプロジェクトで参照されているnunit.frameworkも古いです。新しいほうを参照させる必要があります。
NUnitをインストールしたドライブ\NUnit 2.5.10\net-2.0\framework内にnunit.framework.dllがあるので、プロジェクトごとに設定しなおしていきます。
これでビルドが通りました。
ビルドに成功したところでNUnitを起動。このままだとVisual Studioのファイルが開けないので、
[Tools] > [Settings...]から[IDE Support]を選択し[Enable Visual Studio Support]という項目にチェックを入れておきます。
これでNUnit側でサンプルを開くことができます。
読み込み時にdllファイルが見つからないエラーが出る場合は、
[Project] > [Configurations] > [2 Release]
を選択します。
あとはRunを押すとテストされるかと思います。こんな感じで。

赤い部分がテスト失敗。緑の部分が成功しているということを表しています。
では、実際にプロジェクトを作ってやっていきたいと思います。こちらも参考ページにバッチリ書いてあるので大まかな部分とテストの記述部分のみ触れていきます。
構成としてはメインプログラムとテスト用とプロジェクトを分けて作成します。
テスト用プロジェクトに関してはクラスライブラリで作成し、NUnitから呼び出して使うためにdllとして作ります。
参照設定は先ほども出たnunit.frameworkと、メインプロジェクトを設定しておきます。
テストケース部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Imports FizzBuzz Imports NUnit.Framework <TestFixture()> Public Class FizzBuzzerTest 'Fizz Buzz - 数字を数え、3の倍数でFizz、5の倍数でBuzz、3と5の倍数でFizzBuzz <Test()> Public Sub SayNextTest_1回目は1_1() Dim obj As FizzBuzzer = New FizzBuzzer() Dim result As String = obj.SayNext() Assert.AreEqual("1 - 1", result) 'Assert.AreEqual(期待値, 検査したい値) End Sub End Class |
NUnitはTestFixture()を見て「このクラスにテストケースがある」ということ、Test()で「このメソッドがテストケース」であることを判断します。
Assert.AreEqual()ですが、このプログラムはFizz Buzzをしているので、この場合1回目の期待値は”1-1″、検査する値はSayNext()(数字、Fizz、Buzzのいずれかを返す)で返ってくる値になります。
また、テストケースを増やすうえで、同じような処理がある場合はまとめて書くことができます。
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <TestFixture()> Public Class FizzBuzzerTest '同じような処理をするテストはTestCaseを使うことでまとめて書ける <TestCase(1, "1 - 1")> '1のとき <TestCase(2, "2 - 2")> '2のとき <TestCase(3, "3 - Fizz")> '3のとき Public Sub SayNextTest(ByVal count As Integer, ByVal expected As String) Dim obj As FizzBuzzer = New FizzBuzzer() Dim result As String = Nothing For i As Integer = 1 To count result = obj.SayNext() Next Assert.AreEqual(expected, result) 'Assert.AreEqual(期待値, 検査したい値) End Sub End Class |
と、こんな感じでテストケースを書いては実装を繰り返し、無事すべてのケースをグリーンにさせることができました!
Popularity: 7% [?]

