Remote Unit Testing Brian Pruitt-Goddard Alex Riordan
What's The Problem? Imagine you are a programmer working on a project. While away from your computer, you realize a potential problem area of your program and realize you need to run a few tests to make sure that it can handle certain conditions/inputs. Since you are away from your computer, you are forced to write your ideas down and hope you remember everything for later. Until now...
What Is Remote Unit Testing? It is an Android application that allows programmers to compile and run unit tests against their program remotely.
Client Specifics Basic text editing capabilities o New File o Open File o Save File o Edit File Issues server commands o Move o Delete o Compile o Push o Pull o Test
Server Specifics Handle incoming client requests and respond accordingly. Updates a log file that tracks every move, delete, push, pull, compile, and test (sometimes)
Architecture XML-RPC o Client-side: android-xmlrpc library o Server-side: apache xml-rpc JUnit API o provides programmatic access to JUnit functionalities Javax Tools library o provides programmatic access to compilation functionalities Android SDK version 2.2 o provides designer and emulator to easily develop the application for the Android phone.
If You Wish To Converse With Me, Define Your Terms
Moving A File Allows the user to move a file in their project MOVE
Deleting A File Allows the user to delete a file in their project DELETE
Pulling A File Allows the user to download a file from their project to their Android phone PULL
Pushing A File Allows the user to upload a file from their Android phone to their project PUSH
Compiling A File Allows the user to compile one or more java files in their project COMPILE
Testing A File Allows the user to run one or more unit tests at their project server TESTING 1,2, PASS! FAIL! PASS!
Revisions No server UI o Most options handled under client now Lacking security features o Username/password o Possibility for future implementation "Automatic timeout" not implemented
Future Extensibility Improve text editor o Syntax highlighting o More source control functions: diff, merge, etc. o Customize interface Improve server application o Add security features o Allow more complex compilation and unit test operations, including running entire test suites instead of modular unit tests o Addition of UI for monitoring purposes o More extensive logging capability
Questions?