アプリケーションで複雑な正規表現の単体テストを作成する必要がありますか?
コメント でこれが 内部コンポーネントの単体テスト の特別なケースであると述べているDoc Brownに同意します。
しかし、内部コンポーネントの正規表現にはいくつかの特別な特徴があります。
独断主義は別として、本当の問題は、複雑な正規表現を単体テストする価値があるかどうかです。正規表現が十分に複雑である場合、バグを見つけて再現し、リグレッションを防ぐことができるため、(正規表現がパブリックインターフェイスの一部であるかどうかにかかわらず)価値を提供することは明らかです。
正規表現は強力なツールになる可能性がありますが、複雑な正規表現に少しでも変更を加えただけで機能するという信頼できるツールではありません。
したがって、カバーすべきケースを文書化した多くのテストを作成してください。検証に使用する場合は、失敗するケースを文書化した多数のテストを作成します。
正規表現を変更する必要があるときはいつでも、新しいケースをテストとして追加し、正規表現を変更して最高のものを期待してください。
一般に単体テストを使用しない組織にいたとしても、使用する正規表現をテストするテストプログラムを作成します。必要があれば、自分の時間にそれを行うこともできます。私の髪の毛はもう色を失う必要はありません。
正規表現は、アプリケーションの他の部分と一緒のコードです。コード全体が期待どおりの動作をすることをテストする必要があります。これにはいくつかの目的があります。
残りの言語に別の言語のコードを埋め込むことで克服する必要のある追加のハードルがあるので、メンテナンスのためにこの特別な注意を払う必要があります。
つまり、アプリケーション、期間をテストする必要があります。より大きなブラックボックスの一部として、それを単独で実行する自動テストで正規表現をテストするか、それとも手動でそれをいじるだけかは、それが機能することを確認する必要があるポイントの二次的なものです。
単体テストの主な利点は、時間を節約できることです。現在または将来の任意の時点で、何回でもテストすることができます。正規表現がいつでもリファクタリングされ、調整され、より多くの制約を取得すると信じる理由がある場合は、ええ、おそらくそれについていくつかの回帰テストが必要です。変更する場合は、実行する必要がありますすべてのEdgeケースを1時間考えて、それを壊さないようにしました。または、コードを怖がって生活することを学び、単にコードを変更しないでください。