You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Emīls Šolmanis (Jira)" <ji...@apache.org> on 2021/03/01 17:43:00 UTC

[jira] [Comment Edited] (BEAM-3415) JUnit5 support

    [ https://issues.apache.org/jira/browse/BEAM-3415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17293053#comment-17293053 ] 

Emīls Šolmanis edited comment on BEAM-3415 at 3/1/21, 5:42 PM:
---------------------------------------------------------------

Hi all,

There's definitely interest from my (and my org's) side as well, especially as we're largely using Kotlin, and Beam is the only reason we have Junit4 lying around. I've done a basic PoC and it _seems_ a trivial fix by means of Junit5's `BeforeTestExecutionCallback` and `AfterTestExecutionCallback` extension hooks. The translated code ends up being
{code:java}
override fun beforeTestExecution(context: ExtensionContext) {
    options.`as`(ApplicationNameOptions::class.java).appName = context.displayName
    setDeducedEnforcementLevel()
}

override fun afterTestExecution(context: ExtensionContext) {
    enforcement.get().afterUserCodeFinished()
}
{code}
in Kotlin, and that gets me a working Junit5 pipeline. I had to fudge it significantly because a ton of things used in `TestPipeline` are package-private, but it seems to work. Caveat we don't use remote-runner testing.

I'm curious to hear from someone more familiar with the test harness, am I overlooking something, or is it simply the fact that Junit5 has evolved to make this simple now? If it's the latter I'm happy to put together a PR, should be easy to support both 4 and 5.


was (Author: esmupliks):
Hi all,

There's definitely interest from my (and my org's) side as well, especially as we're largely using Kotlin and Beam is the only reason we have Junit4 lying around. I've done a basic PoC and it _seems_ a trivial fix by means of Junit5's `BeforeTestExecutionCallback` and `AfterTestExecutionCallback` extension hooks. The translated code ends up being
{code:java}
override fun beforeTestExecution(context: ExtensionContext) {
    options.`as`(ApplicationNameOptions::class.java).appName = context.displayName
    setDeducedEnforcementLevel()
}

override fun afterTestExecution(context: ExtensionContext) {
    enforcement.get().afterUserCodeFinished()
}
{code}
in Kotlin, and that gets me a working Junit5 pipeline. I had to fudge it significantly because a ton of things used in `TestPipeline` are package-private, but it seems to work. Caveat we don't use remote-runner testing.

I'm curious to hear from someone more familiar with the test harness, am I overlooking something, or is it simply the fact that Junit5 has evolved to make this simple now? If it's the latter I'm happy to put together a PR, should be easy to support both 4 and 5.

> JUnit5 support
> --------------
>
>                 Key: BEAM-3415
>                 URL: https://issues.apache.org/jira/browse/BEAM-3415
>             Project: Beam
>          Issue Type: New Feature
>          Components: testing
>            Reporter: Romain Manni-Bucau
>            Priority: P3
>          Time Spent: 20m
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)