Many students find testing software as difficult and frustrating as they find writing prose. As with writing, no pedagogy will magically replace the need for plenty of practice. Therefore, we believe students should be required to write tests in as many courses as practical. This workshop will present a survey of tools that instructors can use to incorporate testing into many different courses throughout the curriculum.
We plan to present the following test frameworks:
|RSpec||(too many to list)||Many test frameworks (including Jasmine) are based on, or inspired by, RSpec. Others (like Cucumber) use RSpec "under the hood". In addition, we find RSpec useful for writing system tests of command-line programs.|
|Cucumber||Web Programming, Senior Project, and other courses||Cucumber is designed to upport Behavior Driven Development. We use it primarily in our Web Programming course to support system tests of web applications. However, Cucumber could be used to write system tests for almost any program in any course.|
|MIPSUnit::MUnit||Computer Organization / Assembly Language||MIPSUnit::MUnit is a JUnit-like framework for testing MIPS assembly.|
|DLUnit||Computer Organization / Computer Architecture||DLUnit can be used to test combinatorial and sequential circuits from a Computer Organization, Computer Architecture, or Digital Logic course. DLUnit is simpler to use than JLSCircuitTester, and also works with both Logisim and JLS.|
|CUnit||System Programming, Operating Systems, Networking, Data Structures, etc.||CUnit is a unit testing framework for C. It is useful in any course where students are expected to write C code.|
We will provide a brief overview of unit testing with JUnit. However, we will assume that all participants have had some experience with JUnit and unit testing. Those with no previous testing experience will likely benefit most from a workshop whose primary focus is the introduction of unit testing.
If you have any questions, please email me at .