If I were to list some of the most dangerous habits observed in the way programmers work, I would definitely put making assumptions on this list. Let me explain. Recently, I have been debugging this one unit test that was showing signs of being a false positive. Turns out I was right about that and the reason was really simple – someone made an assumption that turned out to be false. Let’s face it – we have all been there at least once in our career (even once sounds too good to be true 🙂 ). We assumed that certain situation, outcome or combination of several factors is simply not going to occur only to receive a bug report confirming that this assumption was wrong. This often unconscious practice is really common and causes trouble all over the world.
It seems like behavior-driven development (or BDD) and its supporting tools are gaining stronger momentum in Java world than ever. Cucumber, as one of the most popular frameworks used to support and automate BDD, seems like the go-to framework to power user acceptance tests (or UATs) without considering the implications of adoption of such a tool. Since using Cucumber was the requirement of one of the projects I have been working on I would like to share some observations I made and describe some of the pitfalls of such a decision. Continue reading “Pitfalls of Cucumber adoption”
In my previous post titled GitHub and Jenkins integration I showed one possible way of integrating GitHub with Jenkins and outlined the idea and flow of pull request checking. In this post I will show you how to configure Jenkins job to achieve that and also how to add a bit of fancy to this whole process.
Jenkins is a well-know term in many teams around the world and has been for quite some time now. As many organizations migrate their source code form centralized version control systems to git, GitHub seems like a great tool to support and simplify work with git. Needless to mention its great support for code reviews by the concept of pull requests. Both Jenkins and GitHub are great tools on their own but it would be really nice to integrate them and leverage the power of automation even more. In this post I am going to describe my attempt to do so.