xUnit

As tests are an important part of the software development process, I am glad we took some time working with them.

We learned to use JUnit in java. This is not a tool we specifically learn to use in other courses. We used it in RES (course), in PRO (semester project), but not so much otherwise.

We learned to use google tests in C++. I never wrote C++ automated tests that were not executed from the main function before. I think this was something that was really missing in my experience.

We also learned to try to make tests independant from each others: this was useful for me: indeed, aside from allowing to detect wrong behavior and bugs in the code, tests are also useful when refactoring the code, and should be resilient to code implementation modifications, otherwise, these should be often written again.

We were encouraged to learn about and use mocking in tests: For instance Mockito for java, and googlemock in C++. Quickly, mocking appeared to me as a really interesting tool for testing classes interactions, and not only single classes behaviors. Indeed, without mocking, testing the correctness of the interaction of multiple classes can sometimes be difficult. For instance, consider testing the display of a GUI.