views:

70

answers:

2

Hi,

I am implementing an application that involves some svn functions.

I'm gonna write some unit tests for the app, however, how would you suggest I write unit tests for svn commands such as checkout, update, status, etc?

Thanks!

+2  A: 

You could:

  • Use a stub instead of the real svn command; the stub could log its invocations and, at the end of the test, you can check that svn has been invoked as you intended (this is more like a mock than a stub).
  • Create a "sandbox" repository in a temporary directory and perform actual operations on it, like I did in this answer.
Danilo Piazzalunga
+4  A: 

Wrap your SVN-specific code within a class, implementing an interface. When unit testing your main application, stub/fake/mock/whatever your SVN class via the interface. You can then unit test most of your application this way.

Testing the actual SVN interaction will not be a unit test, but rather an integration test. You can write your test cases directly to your SVN implementation.

Grant Palin