23

.NET(または他の言語やプラットフォーム)での名前付けテストアセンブリの最良の規則は何ですか?

私が主に分けているのはこれらのオプションです(他の人に提供してください!):

  • Company.Website-プロジェクト_
  • Company.Website.Tests

また

  • 会社のウェブサイト
  • Company.WebsiteTests

最初の解決策の問題は、.Testsがサイトのサブ名前空間であるように見えることですが、私の考えでは、テストは実際にはより並行しています。Company.Website.Controlsのような新しいサブ名前空間が機能するとどうなりますか?たとえば、その名前空間のテストをどこに置く必要がありますか?

Tests.Company.WebsiteTests.Company.Website.Controlsなどのようにする必要があるかもしれません。

4

10 に答える 10

28

私は一緒に行きます

* Company.Website - the project
* Company.Website.Tests

簡単な理由と答えは簡単です。テストとプロジェクトはコードでリンクされているため、名前空間を共有する必要があります。

コードの分割とソリューションでのテストが必要な場合は、とにかくそのオプションがあります。たとえば、次の方法でソリューションを設定できます

-コードフォルダ

  • 会社のウェブサイト

-Tests フォルダー

  • 会社.ウェブサイト.テスト
于 2008-09-17T16:21:29.857 に答える
13

私は個人的に一緒に行きます

Company.Tests.Website

このようにして、実際のプロジェクトと同じ構造に従って、共通のテスト名前空間とその中にプロジェクトがあります。

于 2008-09-17T15:51:13.440 に答える
7

私は実際に別の並列ルートを持っています。

Tests.Company.Web サイト

新しいサブ名前空間がある場合、あいまいさを解消するのにうまく機能します。

于 2008-09-17T15:52:34.717 に答える
5

私は、次のようにテスト名前空間を構造化することの大ファンです。

会社.テスト.ウェブサイト.xxx

Company.Tests.Website.Controls

あなたと同じように、私はテストをメイン コードに対する並列名前空間構造と考えており、これがそれを提供します。また、名前空間が会社名で始まるため、サードパーティのライブラリとの名前の衝突が発生しないという利点もあります。

于 2008-09-17T15:53:53.510 に答える
1

埋め込まれたアプローチに従います。

Company.Namespace.Test
Company.Namespace.Data.Test

このように、テストはテストされているコードに近く、プロジェクト間を行ったり来たりしたり、参照を探したりして、特定のメソッドをカバーするテストがあることを確認する必要はありません。また、2つの別個の、しかし同一の階層を維持する必要はありません。

また、拡張および開発するときに、コードの個別の部分をテストすることもできます。

最初は少し奇妙に思えますが、長期的には非常にうまく機能しています。

于 2008-09-17T15:59:30.550 に答える
1

私も、アセンブリの実際の名前の前に「テスト」を付けることを好みます。これにより、ユニット テスト アセンブリをまとめて選択して NUNit または使用しているテスト ハーネスにプルするときに、すべてのユニット テスト アセンブリがアルファベット順に一覧表示されて簡単に確認できるようになります。

したがって、Web サイトが私のソリューション (およびアセンブリ) の名前である場合、私は提案します -

Tests.Website.dllを実際のコード アセンブリWebsite.Dllと一緒に使用する

于 2008-09-17T16:41:42.570 に答える
0

私はCompany.Website.Specを好み、通常、ソリューションごとに1つのテストプロジェクトがあります

于 2008-09-17T15:59:03.530 に答える
0

.net Web開発の世界でMVCが現実のものになり始めたので、私はそれらの方針に沿って考え始めました。M、V、およびCは別個のコンポーネントであることに注意してください。したがって、次のようになります。

  • Company.Namespace.Website
  • Company.Namespace.Website.Core
  • Company.Namspance.Website.Core.Tests
  • Company.Namespace.Website.Model
  • Company.Namespace.Website.Model.Tests

ウェブサイトはあなたの軽量ビューです。Coreには、コントローラー、ヘルパー、ビューインターフェイスなどが含まれています。Core.Testsは、前述のCoreのテストです。モデルはデータモデル用です。ここでのすばらしい点は、モデルテストでデータベース固有のテストを自動化できることです。

これは一部の人にとってはやり過ぎかもしれませんが、関心の分離をかなり簡単に行えるようになります。

于 2008-09-18T05:03:40.087 に答える
0

私は通常、ソリューション エクスプローラーで簡潔にするためにテスト プロジェクトに Project-Testsという名前を付け、名前空間にはCompany.Namespace.Testsを使用します。

于 2008-09-17T15:52:34.997 に答える
0

私は一緒に行くことを好みます:

会社.ウェブサイト.テスト

Company.Website.Controls のようなサブ名前空間は気にしません。すべてのテストは、Company.Website.Tests という同じ名前空間に入ります。名前空間のリファクタリングに 2 倍の時間がかかるだけなので、テスト名前空間をコードの残りの部分と並列にする必要はありません。

于 2008-09-17T15:56:48.870 に答える