Tagged In testing :
Guice tricks for better testability, part one
I thought I’d enumerate some of the small Guice tricks we use for making our code more testable. Today: Logical Clocks. You never want to use System.currentTimeMillis() in your code. Rather, you want a logical clock that you can replace in your tests in order to control the flow of time. In Guice, not only… Read more
Just-in-time Providers for Guice
Guice is widely recognised as the best dependency injection framework for the JVM world and specifically for Java. It has brought together ideas from numerous projects, including Spring and PicoContainer, and popularised type driven development. Dependency injection is one of the principal enablers for test driven development, and as such central to our software practices… Read more
Extreme Testing at kaChing
A few months ago, I was invited to give a tech talk at Google about our testing practices. I finally got around to posting the slides, see below! During the talk, I presented how we achieved our extreme iteration cycle of 5 minutes commit-to-production cycle. Starting at a high level, we looked the two fundamental… Read more
Use a Before Method in Your Tests
When writing unit tests using the JUnit like frameworks, the mantra is to avoid any work in the class and prefer putting initialisation logic in a dedicated before method. Imagine you’re testing JSON manipulation and you have sample fixture data to work on. public class WhyUseBeforeTest { static Json.Array fixture = (Json.Array) Json.fromString(“[5,6]”); @Test public… Read more
Findbugs, Hudson and Pizza Driven Development (PDD)
As you may know kaChing (now Wealthfront) is an test driven engineering organization. Test driven is not an option, its a must. We move fast and push code to production few dozens of times a day in a five minutes release cycle, so we must have high confidence in our code. In complex systems there… Read more
Testing with Hibernate
Some of the unit tests I wrote lately involved setting up a data setup in the DB and testing the code using and mutating it. To make it clear, the DB is an in memory DB so the setup is super fast without IO slowdowns. Its very easy to do the setup using hibernate but… Read more