コミットを行う前に、C# ソリューションで数百の単体テストをすべて実行することを好みます。実行には数分しかかからないためです。ただし、それらをすべて実行済みで問題がなく、using
ソリューションでディレクティブを整理することにした場合、単体テストを再実行する必要は本当にありますか? ソリューション内のすべてのファイルを調べ、それぞれに対して Visual Studio の「削除と並べ替え」コマンドを実行するマクロがあります。私の理解では、ディレクティブが変更された後もすべてのプロジェクトがビルドされている限り、using
実行時も問題ないはずです。これは正しい考え方ですか?
3 に答える
それは、「削除して並べ替える」機能をどれだけ信頼しているかにもよります。私の知る限り、順序は重要ではありませんが、どのディレクティブが存在するかは重要です。
たとえば、次の拡張メソッドがあるとします。
public static int Count<T>(this List<T> source)
{
return 0;
}
これが namespace の型にMyExtensions
あり、元のコードが次の場合:
using MyExtensions;
using System.Linq;
...
List<string> list = new List<string>();
int x = list.Count();
次に、最初の using ディレクティブを削除しても、目に見えるコンパイラ出力に違いはありません (つまり、エラーも警告もありません) が、どの拡張メソッドが呼び出されたかが変わります。
今、私は個人的に、「削除して並べ替え」が実際にそのような動作を変更する変更を行わないことを信頼しており、最初はかなり脆弱なコードが必要になるでしょう...しかし、私は「それはその後もビルドされます」というだけでは、テストがまだ機能することを保証するには実際には十分ではありません。
個人的には、とにかくテストを再実行するだろうが、同様に、必要に応じて実行しないことも十分にあり得るだろう. Finglas が言及しているように、破壊的変更を警告する継続的なビルド システムを使用している場合、非常にまれにそれを間違えても、おそらくそれほど悲惨な結果にはなりません。もちろん、壊れたコードがチェックインされて不便を感じる開発者が何千人もいる場合、それは別の問題です。
それは問題ではありません。
個人的には、コードをコミットする前にテストを実行します。
はい。単体テストを再実行する必要はありません。ディレクティブの順序はusing
、コンパイラにとって重要ではありません。