"pros and cons" might be different things for different people. I usually have a look at
- development activity, e.g. are new releases likely or is the last release 2 years old.
- maturity, e.g. how long has it been around, are there tutorials and maybe even books available. (I don't read these books, it's just a sign of adoption.)
- tool support, e.g. is there an Eclipse plugin, Ant support, etc
- size of the dependencies, I don't like frameworks that come with everything of their own. e.g. I want to chose my mocking framework myself.
- kind of license, this is important for me because of legal terms in the company I work for.
- compatibility with related tools, e.g. does it use Gherkin language or not.
And from some frameworks I had a look at
- Instinct bad: last activity Mar 2010, good: ASF license
- JDave bad: comes with matchers and mocks, good: last activity Jan 2011, ASF license
- easyb bad: last activity Oct 2010, not sure: it uses Groovy. This might be ok, but would be a problem for adoption in my case.
- beanspec bad: only one version in 2007, this is dead
- bdoc bad: last activity Jan 2010, not sure: it looks like going the other way, creating a report from the code.
- spock bad: maybe a bit extreme, this is a complete testing framework, not only BDD, good: very active, very cool.
- jbehave, the "mother" of all BDD in Java, bad: very powerful = complex, incompatible license (for me), comes with almost every test library and much more, good: based on RSpec and therefore compatible, eclipse plugins, maven integration, very active community
- ginkgo4j, a BDD framework for Java also based on Ruby's RSpec but using Java lambda's (instead of annotations) to allow you to create highly contextual, highly readable tests. Simple. Very powerful. Open source Apache 2 license.
Concerning the mocks: You definitely need a mocking framework as well. The BDD frameworks just help you in writing the specs, but some tests will need mocks or stubs, esp. when you design top down (from overview to detail).