{"action":"created","issue":{"url":"https://api.github.com/repos/junit-team/junit-lambda/issues/12","labels_url":"https://api.github.com/repos/junit-team/junit-lambda/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/junit-team/junit-lambda/issues/12/comments","events_url":"https://api.github.com/repos/junit-team/junit-lambda/issues/12/events","html_url":"https://github.com/junit-team/junit-lambda/issues/12","id":117424942,"number":12,"title":"Launch Open Test Alliance Initiative","user":{"login":"sbrannen","id":104798,"avatar_url":"https://avatars.githubusercontent.com/u/104798?v=3","gravatar_id":"","url":"https://api.github.com/users/sbrannen","html_url":"https://github.com/sbrannen","followers_url":"https://api.github.com/users/sbrannen/followers","following_url":"https://api.github.com/users/sbrannen/following{/other_user}","gists_url":"https://api.github.com/users/sbrannen/gists{/gist_id}","starred_url":"https://api.github.com/users/sbrannen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbrannen/subscriptions","organizations_url":"https://api.github.com/users/sbrannen/orgs","repos_url":"https://api.github.com/users/sbrannen/repos","events_url":"https://api.github.com/users/sbrannen/events{/privacy}","received_events_url":"https://api.github.com/users/sbrannen/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":14,"created_at":"2015-11-17T19:00:10Z","updated_at":"2015-11-19T16:34:00Z","closed_at":null,"body":"## Status Quo\r\n\r\nThere is no standard for testing on the JVM: the only common building block we have is `java.lang.AssertionError`.\r\n\r\n`AssertionError` is great for signaling that a test has failed, but it doesn't go far enough. Each testing framework is therefore forced to fill the gap with custom subclasses of `AssertionError` or `RuntimeException` to provide a richer feature set to end users. The downside is that each framework has its **own** set of custom errors and exceptions, and this makes it a challenge for frameworks to interoperate.\r\n\r\nFor example, JUnit has long supported the notion of a _failed assumption_ via its `AssumptionViolatedException`, but assertion frameworks like AssertJ cannot integrate that feature without a direct dependency on JUnit. Furthermore, the status quo makes the work of IDEs and build tools more difficult than it should be.\r\n\r\n## Proposal\r\n\r\nThe only real solution to this problem is to create a foundation that we can all build on!\r\n\r\nBased on recent discussions with IDE and build tool developers from Eclipse, Gradle, and IntelliJ, the JUnit Lambda team is working on a proposal for an open source project to provide a minimal common foundation for testing libraries on the JVM. The primary goal of the project is to enable testing frameworks like JUnit, TestNG, Spock, etc. and third-party assertion libraries like Hamcrest, AssertJ, etc. to use a common set of exceptions that IDEs and build tools can support in a consistent manner across all testing scenarios -- for example, for consistent handling of failed assertions and failed assumptions as well as visualization of test execution in IDEs and reports.\r\n\r\n## Draft Implementation\r\n\r\nWe have already begun with a small set of errors and exceptions that we consider to be common for all testing and assertion frameworks. In fact, we are already using these exceptions in the JUnit Lambda [Prototype].\r\n\r\nPlease take a look at our current draft in the [open-test-alliance] project and let us know what you think.\r\n\r\n## Project Name and Repository\r\n\r\nThe name _Open Test Alliance_ is simply a working title for the project. As such, the name is up for discussion, and recommendations are welcome. We will of course need a name that maps to an available Internet domain name so that the code can live in an appropriate Java package.\r\n\r\nThe draft implementation is currently a part of the JUnit Lambda repository; however, as soon as additional parties join the collaboration, we will collectively work to find a new home for the project.\r\n\r\n## Feedback is welcome!\r\n\r\nWhat types of _errors_ and _exceptions_ should such a project support?\r\n\r\nWhat types of properties should such errors and exceptions have?\r\n\r\nWhat should the project be named?\r\n\r\n## Projects already contacted\r\n\r\nWe've already reached out to and asked for feedback from the maintainers of the following projects.\r\n\r\n- Test NG\r\n- Hamcrest\r\n- AssertJ\r\n- Spock\r\n- Google Truth\r\n- ScalaTest\r\n- Eclipse\r\n- IntelliJ\r\n- Gradle\r\n- Maven Surefire Plugin\r\n\r\n[Prototype]: https://github.com/junit-team/junit-lambda/wiki/Prototype\r\n[open-test-alliance]: https://github.com/junit-team/junit-lambda/tree/master/open-test-alliance\r\n"},"comment":{"url":"https://api.github.com/repos/junit-team/junit-lambda/issues/comments/158110778","html_url":"https://github.com/junit-team/junit-lambda/issues/12#issuecomment-158110778","issue_url":"https://api.github.com/repos/junit-team/junit-lambda/issues/12","id":158110778,"user":{"login":"leonard84","id":1151511,"avatar_url":"https://avatars.githubusercontent.com/u/1151511?v=3","gravatar_id":"","url":"https://api.github.com/users/leonard84","html_url":"https://github.com/leonard84","followers_url":"https://api.github.com/users/leonard84/followers","following_url":"https://api.github.com/users/leonard84/following{/other_user}","gists_url":"https://api.github.com/users/leonard84/gists{/gist_id}","starred_url":"https://api.github.com/users/leonard84/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leonard84/subscriptions","organizations_url":"https://api.github.com/users/leonard84/orgs","repos_url":"https://api.github.com/users/leonard84/repos","events_url":"https://api.github.com/users/leonard84/events{/privacy}","received_events_url":"https://api.github.com/users/leonard84/received_events","type":"User","site_admin":false},"created_at":"2015-11-19T16:34:00Z","updated_at":"2015-11-19T16:34:00Z","body":"I like the idea. We definitely need a separate project soon. \r\nWhat is the best way to provide feedback and discuss the actual project itself? Maybe we can setup a slack-chat or do we communicate via github issues only?\r\n\r\nI'm not against Open Test Alliance just an alternative suggestion Common-Test-Framework/Foundation.\r\n\r\n@jlink `TestSkippedException` would be useful for use in rules, test-listeners or other mechanisms that are executed before the actual test runs."}}