I'm new to haskell and working on unit testing, however I find the ecosystem to be very confusing. I'm confused as to the relationship between HTF and HUnit. In some examples I see you set up test cases, export them in an tests list, and then run in ghci with runTestsTT (like this HUnit example). In other examples, you create a test runner tied into the cabal file that uses some preprocessor magic