I work as an Automation tester (my background is Java Dev), so I'm implementing (predominatly) function test suites for a target system. We use SCRUM and endeavour to a take strongly TDD approach. We have seperate developers. Therefore 1) Test Suites materialise before any significant development has taken place on the SUT, and 2) Test suites are developed with JUnit tests first.
The code that forms the Test suite contains code that tests the functionality of the test suite itself. Previously we've been using Eclipse/Jenkins to drive Maven with JUnit, WebDriver, SOAPUI and Emma etc. We've had stories with Hoare logic acceptance criteria that fall into the BDD imperrative style implemented in Java. Recently been looking at strengthening this approach with BDD Tools. This involved a Technology spikes using JBehave and Cucumber. As part of that we've also been moving towards a more abstract declarative story style.
This means the Test Suite contains both pure JUnit tests and BDD tests. The more elaborate nature of the declarative style requires JUnit tests (or seems to) and we need a flexible means to be able to control these.
As it happens we've adopted CucumberJvm; and one reason is @Cucumber.Options() allows us to maintain this control via glue and features that doesn't seem possible with JBehave.
JBehave is not a unit-testing framework and does not aim to honour the JUnit annotations nor test cases.