回答:
はい、できます。JUnitには、独自の機能をテストするための広範なテストスイートがあり、好きな作者に尋ねます。これは、プロジェクトを拡張する際の生産性にとってこれが不可欠であると教えてくれます。おそらくほとんどのテストツールは同じことをします。
トリックは、新機能のテストが実際に新機能自体を使用している必要はないということです-それは単にそれを実行して結果をテストする必要があるだけです。このようにして、システムの一部の機能の信頼性を使用して、はるかに大きな部分の信頼性を確立できます。これは、セルフホスティングコンパイラがブートストラップされる方法に似ており、コンピューティング理論の基本的な手法です。
ケントベックの著書「例によるテスト駆動開発」はまさにこれを実行します。TDDの例として、彼は最初から自分自身の開発に使用されるテストフレームワークをブートストラップします。
あなたは正しいです、ソフトウェアの欠陥は結果が信頼できないことを意味します。ただし、それを回避して、信頼できるテストスイートを構築する方法があります。
アイデアは、テストシステムの各コンポーネントの非常に基本的な「コア」機能をテストする小さなテストハーネスを構築することです(通常、少なくともフレームワークとランナーで構成されます)。テストフレームワークが十分に柔軟である場合、たとえば、インターフェイスを実装したり、ハーネスの実装に必要なメソッドセットを提供したりすることにより、そのハーネスをシステムに直接接続できるはずです。
残りの機能は、ハーネスを使用してすでにテストされている「コア」機能のみに依存してテストする必要があります。「コア」の機能のみを使用して非コア機能をテストする場合は、信頼できる一連のテストがあります。
qunitについては知りませんが、以前のバージョンのソリューションを使用して新しいバージョンを検証するプロジェクトをいくつか行ったので、それを無効なアプローチとは見なしません。
統合されていない、またはUATテストのない真空での単体テストパッケージは、テストパッケージ自体の欠陥、および単体テストスイートがカバーできない通常の統合の問題すべての影響を受けやすいため、私は同じバージョンでのセルフテストは、他のプロジェクトでの新しい単体テストを信頼するよりも欠点があります。
プロジェクトのリンクされたサイトを簡単に読むと、セルフテストライブラリが完全なソリューションであることを宣伝しているよりも、テストシナリオやテストできるターゲットについて特別なケースは何もないことを指摘しているように聞こえます。
ソフトウェアをそれ自体でテストすることはできません。少なくとも、監査状況で許容できる方法でテストすることはできません。2つの異なるX(人、フレームワーク、ツール)が両方とも同じ間違いをしたり、同じバグを抱えたりする可能性がはるかに低いため、独立した検証は確立された規範となっています。これは、テストが実際に正しいことを保証するものではありませんが、テストに不合格になる可能性が低くなることを意味します。それ自体で何かをテストしても、実際にそれが正しく機能するという確信を高めることはできませんが、フィードバックを受け取るまでにかかる時間を短縮するための迅速でダーティなチェックとして役立ちます。