Recently I had the pleasure of giving a talk at the Canberra Java Users Group on the topic 'Real Developers Don't Need Unit Tests':
"Unit testing, and Test-Driven Development in particular, is a vital but neglected art. Proper TDD don't just test code: your tests are executable requirements that tell the story of your application, clarify your design, document your code and help track your progress. They help you find bugs fast, and fix them with confidence. If Real programmers don't need unit tests, they sure make life easier for the rest of us!"
I've posed the slides for this presentation in this article.Add a comment
In a well-organized build process, you want lightning-fast unit tests to run first, and provide whatever feedback they can very quickly. A nice way to do this is to be able to class your tests into different categories. For example, this can make it easier to distinguish between faster running unit tests, and slower tests such as integration, performance, load or acceptance tests. This feature exists in TestNG, but, until recently, not in JUnit.
Indeed, this has been missing from the JUnit world for a long time. Using JUnit, I typically use test names (integration tests end in 'IntegrationTest', for example) or packages to identify different types of test. It is easy to configure a build script using Maven or Ant to run different types of test at different points in the build lifecycle. However it would be nice to be able to do this in a more elegant manner.Add a comment
Continuous Integration with Hudson is a new open source book project in the works. In the spirit of 'eating our own dogfood', this book is produced using Hudson. In this article, I discuss the build framework used for the 'Continuous Integration with Hudson' book.Add a comment
Sometimes, you may need to move or copy Hudson build jobs from one Hudson instance to another, without copying the entire Hudson configuration. For example, you might be migrating your build jobs to a Hudson instance on a brand new box, with system configuration details that vary from the original machine.Add a comment
How can you improve, harmonize and automate your development process using tools like Maven, Hudson, and Nexus? This presentation is a high-level overview of Java software development process improvement, aimed at explaining the concepts behind optimizing the SLDC to management and product owners.Add a comment
- Focused Extreme Feedback with CI Information Radiators - a case study
- Maven Mythbusters #2 - Maven requires an internet connection to delete a directory
- Maven Mythbusters - Maven automatically updates for every build
- Automated deployment with Cargo and Maven - a short primer
- A tale of two repository managers: Nexus and Artifactory compared and contrasted