各テストが特別な(カスタム)AssertionCollectionクラスのインスタンスへのアサーションを作成するMファイル(たとえば、test_featureX.m)であるテストフレームワークがあります。ユーザーは、機能を開発するときに個別にテストを実行し、テスト中に問題のデバッグに役立つ有用な情報をコンソールに出力したい場合があります。また、リポジトリ全体に対してすべてのテストを実行し、標準化された方法で結果を出力するルーチンtestAllもあります。この後者の使用中、コンソールに無関係な情報を出力したくないので、テストの実行はevalc(evalc('test_featureX(ac);'))でラップされ、test_featureXが行うコンソール書き込みを非表示にします。
ここで、アサーションが作成されるたびにtestAllをリアルタイムで画面に出力したいと思います。これを行うには、コールバック関数をAssertionClassインスタンス(ac)に追加してからtest_featureXに渡し、そのコールバック関数に、通過する各アサーションの更新を出力させます。問題は、コールバック関数がevalcコマンドで発生した呼び出しスタック内から実行されるため、その出力がコンソールではなくevalc文字列にルーティングされることです。
evalc評価中であっても、コンソールへの出力を強制する方法はありますか?そうすれば、testAllがコンソールへのほとんどの標準的な書き込みを拒否している間に、コールバックがコンソールにステータスを出力できますか?
結果が次のようになることを願っています:
s = evalc('testFunction();')
function testFunction()
disp('line 1');
fprintf('line 2\n');
fprintf(TO_THE_CONSOLE, 'line 3\n');
end
...そして結果の出力は
line 3
s =
line 1
line 2