私はパフォーマンスが大好きですが、自動化されたテストを実行することの重要性も認識しています (より適切な正式な検証方法が主流になるまで)。
欠点は、テスト容易性を考慮して設計しようとすると、依存関係を表すインターフェイスを導入し始めることです。ご存知のように、インターフェイスは呼び出しをその依存関係に動的にディスパッチし、コンパイル時の最適化の機会を減らします。
class MyDependency
{
void someMethod();
}
class MyUnit
{
// Concrete type reference of MyDependency allows
// to bypass the dynamic dispatch
this(MyDependency mayBeAMock)
{
mayBeAMock.someMethod();
}
unittest
{
// Now how can I get a mock of my dependency without to instantiate it.
auto dep = someBlackMagic.getMock();
auto uut = new MyUnit(dep);
}
}
本番環境で動的ディスパッチのコストをかけずに、クラスを単体テストするためのより良い方法が存在します。必要に応じて、単体テストの実行にはそのコストを支払うことができますが、製品版のリリースには使用できません。
D および C++ ソリューションに興味があります。