I'll assume that you mean a first programming course that uses a language (Java...) that has well integrated testing tools.
If you just use unit testing as an add-on then I'd guess the proper answer is no. There are other things the student could be doing.
However, if you are willing and able to modify your teaching a bit then unit testing can be a big ...
Have you thought about having a solution that you create and test the students test cases against your solution? Then you have a stable platform for running the student defined tests.
Also run test cases which you prepare against the student's code. Now you have graded the two parts independently of one another.
Just out of curiosity, what did you use for ...
It depends on what you mean by "used."
The student projects might not lend themselves to TDD in that the early assignments will probably be very small and if the end up writing 90% of the project as tests and 10% as their stuff it could be deflating.
That said, they should at least be familiar with TDD but that doesn't mean it has to or should be in CS1. ...
I'm going to start my answer the same way as the only other answer so far and say it depends on the context of the course, but head in a different direction.
The fact that you're calling the course CS1 implies that it's the start of a chain or tree of courses. A CS1 for a traditional theoretical CS course of study will be different than a CS1 for a newer ...
At the TU Delft we've developed WebLab, which is used in various CS related courses. It has support for programming assignments, for which students code their solutions in a web-editor, and run their code against their own tests, and the spec-tests.
Grades are automatically calculated based on the number of succeeding specification tests.
As a Course ...
If you run all implementations against all tests, then you can see anomalies. If you put results into a grid, then any failures should show up as a line: horizontal for implementations, vertical for tests. Any odd failures will still need investigating, but there should be few.
1, 2, & 3
In most cases, I'm okay with them having the tests ahead of time. The only thing that concerns me a bit is that they can edit the tests, and GitHub would use those.
What I do, and it's typically only on larger weight assignments, is to download all of the repositories. I'll then copy either a clean copy of the test files or a new set of test ...
In the auto grader I use, the following process is followed:
The students files are copied into a pristine work area
The "provided" file(s) are removed from the work area
If I intend to use MOSS, the remaining files are copied for later use
The "provided" file(s) are copied into the work directory
The result is built (if necessary)
Very interesting strategy. You are essentially putting the 10% test case-writers in the role of a sophisticated recruiting agent who is "interviewing" the rest of the 90% of the class for a job. It is probably not really fair, since the 10% are probably not sufficiently mature to identify the key concepts to be tested, but the class discussion (or perhaps ...
I assume that there is some logic in the app, somewhere. Hard for me to imagine it otherwise.
If you build the client side with a Model-View-Controller architecture, the testing can be done on the model (as is most natural) and possibly on the controller.
If the server side is also built by the students, then it may also require logic beyond data access. ...
Yes, but introduce it one step at a time (Zone of Proximal Development).
Manual testing is the absolute minimum, needed to know if you have written the program that you intend to (feedback). Incrementally adding to a program is the only effective way to get a program to work (quick feedback). Therefore as least to manual TDD, from the start.
Then latter ...
That depends entirely on the context of your CS1 course. Are you teaching unit testing suite to your students? If you haven't learned something then how can you use it? If unittest is part of the curriculum, then definitely students should use it. At my University, students are formally introduced to the JUnit suite during 2nd year, and thus for all their ...
As part of their coursework, my students build a master/detail application with a simple search field on the master page.
They have a testing assignment to write a JUnit functional test validating search-form input, as well as a Mockito test validating that search-form entries are correctly stored into / read from shared preferences.
You could go deeper w/...
I have written a small game for Android, which I published on GitHub.
It's a board game, and I have written unit tests for all important parts of the program, especially for placing stones on the board. These tests are in the app/src/test folder.
Since I have translated the app into several languages, I have put the string messages into Android-style XML ...
Tic tax toe.
Begin game. Test model state is:
Move(x, 1, 1). Test model state is:
Begin game. Test score is:
knock down 3 pins. Test score is:
Knock down 3 pins then 7 pins. Test score is:
Unit testing is orthogonal to android. Nothing about android keeps you from unit testing. You just ...