There's been some talk recently about essence and ceremony, particularly regarding JVM programming languages. This entry talks about essence vs. ceremony in unit testing.
It's common that configuration changes between environments (e.g., development, test, production). This entry describes the specification of a custom PropertyPlaceholderConfigurer for per environment Spring configuration.
Have you ever seen or even developed a long, complex setup method in JUnit? Maybe it was because the production code was violating the Law of Demeter. Here's another Robert Martin Craftsman style entry.
Over time, how do you maintain a maximum 10 minute build? This is an important agile practice for continuous integration. This entry describes an Ant task designed to run standard JUnit tests concurrently.
This entry describes a fun game agile software development teams can play to encourage best practices and discourage bad practices for continuous integration builds.
Here's an analogy to explain the precondition and postcondition covariance and contravariance rules of design by contract (DBC) in an inheritance/implementation hierarchy. These rules support the Liskov substitution principle (LSP) [...]
Which dynamic programming language should I introduce to a group of relatively young, inexperienced Java developers? The choice is between Groovy and JRuby [...]
PMD is an excellent tool for finding potential bugs and improving code quality, but it can generate a lot of false positives. Here's my list of the top 10 rules I turn off immediately [...]
Should a failing unit test break the build? Elliotte Rusty Harold recently discussed why he doesn't think so. Ever heard of test categorization? Well, there's a new test category in town - the todo test category[...]
There are some practical reasons for testing private methods (and inspecting private fields on occasion). This entry discusses these reasons and why using reflection instead of just changing the access scope of the method itself is the way to go.
Rarely do I disagree with Uncle Bob. I’ve learned a lot from reading his writings over the years. He recently blogged about mock objects in response to a blog from Cedric Beust...
My build/SCM blog series ends with a look at one of the most annoying things a member can do to his team and a checklist to follow for reducing the chances of breaking a build.
The second part of the build/SCM blog series deals with what happens when a build breaks. This happens, hopefully infrequently, but it happens. Getting the build back on track should be one of the highest priorities...
Here is the first blog in a series discussing some obsolete practices and just plain annoyances regarding builds and source code management. The context is an agile development environment following the best practices of continuous integration...
Suppose I'm focused on specifying the behavior of a particular method. How do I know if I've specified everything? I'd like to share a checklist of things I think about to help accomplish this...
Have you ever had a hard time choosing among concurrent conference sessions, tutorials, BOFs, etc? Here’s an objective scoring system for helping you get the most bang for your buck.
What does it mean when you perform a correct refactoring, but your tests break? This blog entry describes some decoupling tips to deodorize this code (or test) smell.
This entry describes a guideline for ordering import statements in Java classes and interfaces. The ordering aids in module dependency management, particularly in a layered architecture.
This entry discusses a controversial, yet practical technique for refactoring test methods into a concise specification of test cases for a production class method.