Hello Mauricio, that sound like a good idea! I know that our code should be testable, but aren't we exposing implementation details of the system under test (SUT) here? Wouldn't a better approach be to make the final code composed of different components and test those components individually? And for the `run` method, test only the final result?

Expand full comment

Hey Vinicius! In this case, I don't think we are exposing the implementation details. We just re-designed how the pipeline works, and we made this new idea to fit in our way of thinking. More importantly, I can't see any mistakes that could be caused by this new design choice, which is what I care (way more than design purism).

Testing things separately is always something to reflect on. In this particular case, we couldn't. For example, we can't run the student code without compiling it, or we can't calculate coverage without running their tests. Testing each component individually would require a lot of work, and so, it was just natural to go for fully-fledged integration tests!

Expand full comment