RoboLIFT
Anthony Allevato, Stephen H. Edwards · 2012
Many computer science educators have adopted test-driven development practices in their introductory computer science courses, as a way of encouraging incremental development and decreasing defects in student code. This practice is straightforward for basic data-driven objects, but making unit testing of GUI applications approachable for students poses a larger challenge. We have previously addressed this problem for Swing applications by developing LIFT, a library that allows students to easily write JUnit tests for Swing interfaces. Since then, we have transitioned away from Swing to Android as the development platform in CS2 to better motivate and excite our students about their assignments. To fully support this change, we had to ensure that our students could fully test the GUI portions of their solutions on that platform as well. The Android operating system has significant built-in support for GUI testing, but the standard API is too complex for students to use. In order to address this, we developed RoboLIFT, a framework that eases the task of writing concise and complete unit tests for Android applications. Furthermore, RoboLIFT also has support for automated grading on the Web-CAT automated assessment system, so even if instructors do not require their students to follow test-driven development practices, they can still enjoy the benefits of automated grading by writing correctness tests that use RoboLIFT to exercise the students' graphical user interfaces.