ラベル VB の投稿を表示しています。 すべての投稿を表示
ラベル VB の投稿を表示しています。 すべての投稿を表示

2009年10月4日日曜日

SharpDevelopを使ってみた。

C#のオープンソースIDE『SharpDevelop』を使ってみました。
http://www.icsharpcode.net/OpenSource/SD/

標準でNUnit・PartCover・Subversionに対応しており、全てGUIから操作が可能で、
テストとカバレッジ表示もソースコードと連動していてかなり便利です。

C#のMono Compilerにも対応しているのも良い点です。

個人的に評価しているのはTODOなど特定の文字列でコメントした箇所を一覧で表示できることですね。
関数やクラス名の変更などリファクタリングに対する機能はVisualStudioがかなり充実している感じました。

コードを綺麗にするリファクタリングを行いにくい点以外はVisualStudioより良いと思いました。
※拡張機能を何もインストールしていない状態での個人的な意見となります。
あくまでもご参考までに。

.

2009年9月25日金曜日

NUnit で TestSuite の作成と実行

VS2008で、プロジェクト(DLL)毎に記述したテストクラスを
一度にまとめて実行したい!と思ったのが発端。

NUnitのドキュメントを見る限り、どうやらSuite属性を使えば出来る模様。
http://www.nunit.org/index.php?p=suite&r=2.5.2

で作成してみたサンプル
SmapleTest.DLL
------
namespace SmapleTest
{
[TestFixture]
public class SampleTest
{
[Test]
public void TestCase1
{
Assert.Fail("失敗するテストケース");
}
}
}
------

TestSuite.DLL
------
namespace TestSuite
{
public class AllTest
{
[Suite]
public static IEnumerable Suite
{
get
{
ArrayList suite = new ArrayList();
suite.Add(new SampleTest());
return suite;
}
}
}
}
------

これをNUnit.exeに読み込ませてみる。
これで完成!



と思いきや。


NUnitに表示されたのは一行のみ
『C:\TestSuiteSample\TestSuiteSample\bin\Release\TestSuite.DLL』
DLLの絶対パスやん。

おもむろにRUNボタンを押してみるが、動作しません。


再度NUnitのドキュメントを読み直しました今度はちゃんと。

NUnitの起動時に/fixtureのコマンドラインオプションをつけてねと書いてありました。

コマンドプロンプトで以下を実行(全て一行で書いてます。)
-----
C:\Program Files\NUnit 2.5.1\bin\net-2.0\nunit.exe /fixture:TestSuite.AllTest C:\TestSuiteSample\TestSuiteSample\bin\Release\TestSuite.DLL
-----

fixtureオプションでSuite属性のプロパティを持っているクラスの絶対パス(名前空間を含めたフルパス)を指定します。

これで立ち上がったNUnitにちゃんとSampleTestのテストケースが表示され、
実行することが出来ました!


英語を読むのに苦労しましたが、何とかテストスイートの作成に成功!
これで少しテストコードの作成が面白くなってきました♪

.

2009年9月12日土曜日

NUnitメモ

NUnit を使い始めたのでメモ書き。

・クラスと Test 属性をつけた関数は public にする必要がある。
・NUnitに読み込ませるのは DLL、EXE どちらの形式にしても OK 。


以下のような形でクラスを作成します。

----
[TestFixture]
public class TestSample
{
[SetUpFixture]
public void SetUpFixture()
{
// [TestFixture]の最初に一度だけ呼び出される関数。
}

[TestFixtureTearDown]
public void TestFixtureTearDown()
{
// [TestFixture]の最後に一度だけ呼び出される関数。
}

[SetUp]
public void SetUp()
{
// [Test]メソッドを呼び出す前に実行される。
//([Test]が複数あれば複数回呼び出される)
// 必要なインスタンスの生成などを行う。
}

[TearDown]
public void TearDown()
{
// [Test]メソッドを呼び出した後に実行される
//([Test]が複数あれば複数回呼び出される)
// リソースの解放処理などを行う。
}

[Test]
public void Test()
{
// ここにテストコードを記述

// 期待値とテスト結果の比較には以下のメソッドを使用する。
Assert.AreEqual("a", "a"); //OK
Assert.AreEqual("a", "b"); //NG
}

[Test]
[ExpectedException(typeof(ArgumentException))] // この場合はArgumentExceptionが発生しなければテスト失敗となる。
public void TestCatchException()
{
// ここにテストコードを記述
}
}
----
NUnitではAssertで失敗すると例外が発生してそこでテストが止まります。

私はテストする関数毎にテストクラスを用意して、
テストケース毎にテスト関数([Test]属性が付いた関数)を作成するようにしています。


.

2008年2月29日金曜日

フォーム遷移について

VBにてフォームを遷移(画面遷移)する上で次のような処理をすると
他の画面がバックに強制的に表示される場合がある
frm0から処理で
frm1.show()
frm1.visible = false
frm2.show()
とする方法を行うとfrm0が表示されずに
ほかの画面がバックに表示されることがある

次の方法を行うと解消された
frm0から処理で
frm1.show()
frm1.TopLevel = false
frm2.show()

画面遷移は本来こっちで行うほうが正しい?

2008年2月14日木曜日

VBの文字列

VBでマクロを書いていた時のこと
文字列の二重引用符で嵌りました…

VBで文字列を扱う場合二重引用符(")で囲みます
例:"文字列"

じゃー二重引用符はどうやって文字列で表現するのー!

C言語とかと一緒で (\")こんなんでいけるかな~と
まったくだめ…そのまま (\)が文字列として扱われやがった

こういうときはマイクロソフトさんで検索っと
ありましたありました。
「Visual Basic における文字列の基本」
http://msdn2.microsoft.com/ja-jp/library/ms234766(VS.80).aspx

二重引用符を続けて2回書けばよいんだそうで…(csvの仕様とそっくりやわ)
""""と書くと⇒ " として扱われる。

1つ勉強になりました。

.

2008年1月16日水曜日

DataGridViewのセルに複数行表示させる

プロパティより設定可能
コードはこんな感じ
dataGridView1.Columns[0].DefaultCellStyle.WrapMode = DataGridViewTriState.True

あとは表示データに改行を入れてやればおk

2008年1月8日火曜日

クリスタルレポートに表示する値を渡す

クリスタルレポートに固定の表示する値をVBから渡す方法。

まず、レポートにパラメータフィールドを追加。
適当な名前をつける。今回はTEXTとつける。
次にVBのコード側に次の式を記入

CrystalReport.SetParameterValue("TEXT", "適当")

これで、レポート側に適当と表示される。

なお、これはdatasetからデータをセットした後に記入すること
データセット前に行うと表示されない。
初期化されてるのかな・・・

クリレポの行数指定改ページ

クリスタルレポートの行数を指定して改ページする方法。

ページヘッダに「式フィールド」を追加して次の式を記入
WhilePrintingRecords;
numberVar line := 0;

次に詳細(行数を指定するセクション)に式フィールドを追加して次の式を記入
WhilePrintingRecords;
numberVar line;
line := line + 1;

最後に詳細のセクションエキスパートにある「出力後改ページ」にチェックして、式を追加
WhilePrintingRecords;
numberVar line;
line = (出力したい行数を記入)

最初がページ毎に行数を初期化
二つ目はラインが1つ増えるごとに1足す処理
最後がラインが特定になったときに改ページする条件
のはず

2007年12月7日金曜日

VB2005 DataSetにおいて CloseとDispose

現在まとめ中ですが
Dispose・・・オブジェクトのリソースの削除
clear・・・オブジェクトの中のデータの削除
か・・・な・・・・
跡で書き直す予定。

なお、なぜ今回このようなことを書いたかというと
データセットにてDisposeしたのにデータが保存されたままで
削除されないという問題にぶつかったためです。

この場合はClearを使うのが正しいんですね。
違いがようわからんわい。

追記:
大体あっていたようで・・・なのか?
自分の中でまとめてみると
clearはデータセットのテーブル及びデータを削除する
disposeはその場所つまりリソースを開放するのみ・・・
であってるのかな・・・

2007年12月4日火曜日

C++/CLI既定の名前空間の変更方法

環境はVC2005です。

新しくプロジェクトを作成したわいいが…
既定の名前空間がプロジェクト名で固定

C#やとプロジェクトの
[プロパティ][アプリケーション][既定の名前空間]
で簡単に変更可能。

C++/CLIで既定の名前空間を変更しようと
プロジェクトのプロパティ開いて探してみたが見当たらない

ということでプロジェクトファイル(拡張子.vcproj)を
テキストエディタで開くと10行目までに「RootNamespace」を
設定しているらしき部分がありました。
#ココからは直接プロジェクトファイルを変更するので
#一度バックアップをとっておいた方がいいですね。

RootNamespaceの値を変更すると規定の名前空間が変わりました!

こんな感じで書き換えます
-----------------
RootNamespace="既定の名前空間にしたい文字列"
-----------------

GUIで入力できると嬉しいのですがね…

.

2007年12月3日月曜日

VB2005 エラー処理

エラー処理は基本的にTry ~ End Try で処理する。
エラーが起きれば自動的にcatchで捕まえてくれるが
意図的に起こしたい場合はThrow New Expetion()で例外を発生させる

また、End Tryの前にFinally処理を付け加えるとFinallyを必ず通る。
データベース切断などを入れておくといい。

関数を作ってboolean型判断でエラーを区別するのも使えそう?
Private Sub main()
Try
If a = false Then
Exit Try
End If

if b = false Then
exit Sub
end If
End Sub

catch ~~

End try
'---ここが飛ばされたりする
End sub

2007年11月19日月曜日

データグリッドビューの値を取得、表示

VB2005にて

DataGridViewに表示したものを選択、取得、表示する。
txtBox.Text = DataGridView.SelectedCells(i).Value
選択はFullRowSelect
iはColumnの値

これを忘れててうまいこといかず、20分悩んでたorz

ほかにも
txtBoxText = DataGridView.SelectedRows(0).Cells("columnName").Value
などがあるらしい

2007年11月8日木曜日

ファイルの読み込み例外処理

テストでファイルやフォルダのアクセス権なくしたり。
読み込むファイル削除したり。
ファイル消して同じ名前のフォルダ作ったり。
単なるファイルの読み込みだけでもテスト項目って豊富なんやなーと。

そのたびに例外が発生してたので処理書いて残しときます。
--------------------
using System;
using System.IO;

if (File.Exists(path) == false) {
// 読み取れるファイルで無い
}
try {
// ファイル読み込み
using (FileStream fs = new FileStream(path, FileMode.Open)) {
}
} catch (UnauthorizedAccessException) {
// アクセス権
} catch (IOException) {
// I/O エラー
}

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

.

ラベル