コードがテスト用にセットアップされていない限り、コードをテストできないことは一般的に認められていますか?
仮定のコード:
public void QueueOrder(SalesOrder order)
{
if (order.Date < DateTime.Now-20)
throw new Exception("Order is too old to be processed");
...
}
次のようにリファクタリングすることを検討する人もいます。
protected DateTime MinOrderAge;
{
return DateTime.Now-20;
}
public void QueueOrder(SalesOrder order)
{
if (order.Date < MinOrderAge)
throw new Exception("Order is too old to be processed");
...
}
注:さらに複雑なソリューションを考え出すこともできます。IClock
インターフェイスとファクトリが含まれます。それは私の質問には影響しません。
上記のコードを変更する際の問題は、コードが変更されたことです。顧客が変更を要求することなく、コードが変更された。また、変更にはミーティングと電話会議が必要です。そのため、何もテストしない方が簡単な時点にいます。
変更したくない/できない場合: テストを実行できなくなりますか?
注:上記の疑似コードは C# のように見えるかもしれませんが、それは単に読みやすくするためです。質問は言語に依存しません。
注:架空のコード スニペット、問題、リファクタリングの必要性、およびリファクタリングは架空のものです。もしあなたが私のものに不満を持っているなら、あなた自身の架空のコードサンプルを挿入することができます.
注:上記の仮想コードは仮想です。生きているか死んでいるかにかかわらず、コードとの関係はまったくの偶然です。
注:コードは架空のものですが、答えはありません。質問は主観的なものではありません。答えがあると私は信じています。
更新:もちろん、ここでの問題は、上記の例の変更によって何も壊れていないことを保証できないことです。確かに、コードの一部を別のメソッドにリファクタリングしましたが、コードは論理的に同一です。
しかし、新しい保護されたメソッドを追加してもオブジェクトの仮想メソッド テーブルがオフセットされなかったことを保証することはできません。このクラスが DLL 内にある場合は、アクセス違反が発生したことになります。