11

次のように、タイプtest-suiteを使用してセットアップした cabal パッケージがあります。exitcode-stdio-1.0

を使用して実行するとcabal test、cabal は実行可能ファイルの標準出力/標準エラーを出力しません。独自のログ情報のみを出力します。

$ cabal test

Running 1 test suites...
Test suite test-foo: RUNNING...
Test suite test-foo: PASS
Test suite logged to: dist/test/foo-0.0.1-test-foo.log
1 of 1 test suites (1 of 1 test cases) passed.
$ 

必要な出力は、そのログ ファイルにあります。

$ cat dist/test/foo-0.0.1-test-fo.log 
Test suite test-foo: RUNNING...
HUnit group 1:
  Expected connect: [OK]

         Test Cases  Total      
 Passed  1           1          
 Failed  0           0          
 Total   1           1          
Test suite test-foo: PASS
Test suite logged to: dist/test/foo-0.0.1-test-foo.log
$ 

この出力を独自の標準出力に表示するにはどうすればよいですか? 私はドキュメントでそれを見つけることができません。

4

3 に答える 3

0

exitcode-stdio-1.0cabal を使用すると、テスト プログラムが終了コードを返した場合 (明示的に「失敗」した場合) にのみテスト ログが報告されます。解決策は、テストのいずれかが失敗したときにテスト プログラムがエラー コードを返すようにすることです。

import System.Exit (exitFailure, exitSuccess)

main :: IO ()
main = do
  result <- runTests
  if result
    then exitSuccess
    else exitFailure

runTests :: IO Bool
runTests = do
  ...
  return True/False

「手動」テスト プログラムを作成する場合にのみ必要です。ほとんどのテスト レポート フレームワーク (例: Tastytest-frameworkhspec ) は、既に自動的にそれを行っています。

常に結果を確認したい場合は、次のいずれかをいつでも使用できます。

  • cabal test --log=/dev/stdout(別の回答で与えられた)
  • exitFailure実行の最後に
于 2014-07-30T17:58:55.933 に答える