Autofixture: NSubstitute依存関係アプローチの議論

作成日 2017年07月21日  ·  3コメント  ·  ソース: AutoFixture/AutoFixture

現在、 AutoNSubstituteプロジェクトはNSubstitute1.5に依存しています。 ただし、現在の統合には重大な問題と制限があります(#720、#592、#707、および#653を参照)。 それらを修正するための方法は、しかし、我々はNSubstituteに登場API必要があります2.0.2のみを。 したがって、この接着剤ライブラリをどのように進めるかを決定する必要があります。

方法1-単一のAutoNSubstituteプロジェクトを維持する

このようにして、現在のAutoNSubstituteプロジェクトを続行しますが、NSubstituteの依存関係を2.0.2増やします。 この変更はv4でのみ導入され、「重大な変更」ページで説明されるため、問題になることはありません。

__長所:__

  • サポートするプロジェクトが2つ少なくなります(接着剤+テスト)😉
  • 混乱が少ない。 バグ修正を実行して動作を変更するには、libのneverバージョンが必要です(ジェネリックスをサポート)。 これをv2のみで実装する場合、接着剤ライブラリが異なれば動作が異なることは非常に混乱する可能性があります。 私の知る限り、現在、接着剤ライブラリのすべてのバージョンが同じ機能を提供しています。

方法2- AutoNSubstitute2プロジェクトを作成する

通常、ライブラリのさらに別のバージョンをサポートしたい場合は、この方法に従いました。 ただし、その場合のAFAIKは、機能の制限ではなく、重大な変更が原因でプロジェクトが存在していました(はっきりとわかる場合)。

__長所:__

  • すべてのNSubstituteライブラリを引き続きサポートします
  • 元のNSubstituteの重大な変更はないため、v4を使用する方が簡単です(ソリューションを段階的に移行することが可能になります)。 ユーザーは、NSubstitute2と新しい接着剤ライブラリにいつ切り替えるかを選択できます。

__短所:__

  • AutoNSubstituteライブラリは引き続きNSubstitute 2.0.0と互換性があるため、2つの互換性のあるバージョンのglueライブラリを使用するのは少し面倒です。 もちろん、AutoNSubstitute v1に人為的に上限を設定することもできますが、バイナリはすべて問題ないため、その制限は小さな嘘になります😞

個人的には、どちらのアプローチにも価値があると思うので、ここでは強い意見はありません。 ただし、選択を余儀なくされた場合は、方法1の方が簡単で、NSubstitute 2に重大な変更がないため、移行しても問題はありません。

@ AutoFixture / coreどう思いますか? ;-)

question

全てのコメント3件

はい、維持するものが少なければ少ないほど、前進しやすくなります。 私は1に投票しています。

1に投票します。

#832でそのアプローチに従ったため、統合にはNSubstitute2が必要になります。

このページは役に立ちましたか?
0 / 5 - 0 評価