4

将来的に開発しやすいように、単純なプロジェクトを構築しようとしています。基本的に、私はcabal init基本的なものを取得するために使用し、src フォルダーを作成しました。その中にメイン フォルダーとテスト フォルダーを作成しました。メインはすべてのソース コードを保持するためのもので、テストはすべてのテスト ソース コードを配置するためのものです。.cabal の内部には、次のものがあります。

.
.
.
.
test-suit Test
  type:           exitcode-stdio-1.0
  hs-source-dirs: src/test
  main-is:        Test.hs
  build-depends:  base

executable Finance
  hs-source-dirs: src/main
  main-is:        Main.hs
  build-depends:  base

Main.hs、Methods.hs、Test.hs の 3 つのファイルしかありません。Methods.hs は Main.hs にインポートされて実行され、Test.hs は Methods.hs をインポートしてメソッドをテストします。私の目標は、その時その時できるようにcabal --enable-tests configureなるcabal buildことcabal testですcabal install。しかし、ビルド段階でエラーが発生します

src/test/Test.hs:2:8:
  Could not find module `Methods`
  Use -v to see a list of the files search for.

Methods.hs の場所を cabal に知らせるにはどうすればよいですか? また、プロジェクトを設定するためのより良い方法はありますか?

4

1 に答える 1

3

テストスーツに追加src/mainする必要があるようです。hs-source-dirs

また、Methodsモジュールを使用してライブラリを作成し、実行可能ファイルとテストスイートの両方をライブラリに依存させることができます。

ハッキングにはたくさんの例があります。たとえば、 doctestそれはテストスーツ「spec」が使用し、テストスーツ「 doctestshs-source-dirs」はライブラリを使用します。最初のアプローチでは、ライブラリによってエクスポートされない区間関数をテストできます。

于 2013-01-27T09:16:42.070 に答える