You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It would be really cool if there was an option to show a list of the test failures again in the summary.
for example in my tests suite a test failure looks like this:
> Task :failgood:test FAILED
SuiteResult > when there are failing contexts ✔ allOk is false
Until ✔ is NotIgnored before now
Until ✔ returns a reason after now
a test context returned by a function ✔ describes behavior
a test context ✔ can tell its name with path
test context defined in a kotlin object ✔ describes behavior
Suite ✔ Empty Suite fails
test context declared on top level ✔ is also a nice way to define your test context
test context defined in a kotlin class ✔ describes behavior
Suite ✔ Suite {} creates a root context
a test context ✔ can be created from a path
a test context ✔ parents is ordered
The describe top level method ✔ creates a context named '<className>' when called with a class
RootContext ✔ knows its file and line number
ObjectContextProvider ✔ provides a context from an class in a kotlin class (MyTest::class.java)
ContextTreeReporter ✔ outputs test results in tree form
ObjectContextProvider ✔ provides a context from an object in a java class (MyTest::class.java)
ContextTreeReporter ✔ outputs empty root context
ObjectContextProvider ✔ provides a context from an object in a kotlin class (MyTest::class)
ContextTreeReporter ✔ outputs empty context
ContextTreeReporter ✔ outputs time
ObjectContextProvider ✔ provides a list of contexts from an object in a kotlin class (MyTest::class)
Error Handling > Non deterministic test names ✔ make their test count as failed
ObjectContextProvider ✔ provides a top level context from a kotlin class
test isolation for root contexts > in the default isolation mode (full isolation) ✔ test dependencies are recreated for each test
SingleTestExecutor > test execution ✔ executes a single test
ObjectContextProvider > correcting source info ✔ corrects the root context source info if its not coming from the loaded class
SingleTestExecutor > test execution ✔ executes a nested single test
SingleTestExecutor ✔ also supports describe / it
test isolation for root contexts > in the default isolation mode (full isolation) ✔ passes testInfo and success to afterEach
SingleTestExecutor > error handling ✔ reports exceptions in the context as test failures
test finder ✔ can find Test classes
ObjectContextProvider > correcting source info ✔ does not touch the source info if it comes from the loaded class
SingleTestExecutor > error handling ✔ reports exceptions in the autoclose lambda as test failures
test isolation for root contexts > a root context with isolation set to false ✔ runs tests without recreating the dependencies
ObjectContextProvider > Error handling ✔ throws when a class contains no contexts
ContextVisitor<*> ✔ can be easily created
test isolation for root contexts > a root context with isolation set to false ✔ passes testInfo and success to afterEach
FailGoodJunitTestEngine ✔ parses a filter string
ObjectContextProvider > Error handling ✔ wraps exceptions that happen at class instantiation: ClassThatThrowsAtCreationTime
ContextDSL::describe ✔ works for class
junit platform observations > UniqueId ✔ replaces + with space when parsing
Error Handling ✔ tests with wrong receiver
ObjectContextProvider > Error handling ✔ wraps exceptions that happen at class instantiation: ClassThatThrowsAtContextGetter
ObjectContextProvider > Error handling ✔ gives a helpful error when a class could not be instantiated
ObjectContextProvider > Error handling ✔ ignores private classes
the ContextFinder ✔ finds a single test with a uniqueId selector
the ContextFinder ✔ does not run a class that has no failgood test annotation
The Junit Platform Engine - works with Blockhound installed
Suite > coroutine scope ✔ does not wait for tests before returning context info
Suite > error handling ✔ treats errors in getContexts as failed context
The Junit Platform Engine ✘ can execute a simple test defined in an object
java.lang.AssertionError: Assertion failed
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invokeSuspend(JunitPlatformFunctionalTest.kt:43)
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invoke(JunitPlatformFunctionalTest.kt)
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invoke(JunitPlatformFunctionalTest.kt)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invokeSuspend(ContextStateCollector.kt:59)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invoke(ContextStateCollector.kt)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invoke(ContextStateCollector.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:100)
at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:146)
at kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1.invokeSuspend(ContextStateCollector.kt:56)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
FailGoodTestPluginFactory ✔ provides description and name
createResponse > contexts ✔ creates friendly uniqueid for a root context
FailGoodTestPluginFactory > test framework configuration ✔ returns a suite object that returns no suites
FailGoodTestPluginFactory > test framework configuration ✔ returns the TestUnitFinder
createResponse > contexts ✔ creates friendly uniqueid for a sub context
new mock syntax ✔ looks like this
soft assert syntax ✔ could look like this
Error Handling ✔ handles errors in resource correctly
closing test resources > autoclosable ✔ is closed in reverse order of creation
closing test resources > autoclosable ✔ closes autocloseables without callback
createResponse ✔ creates friendly uuids for tests
createResponse > failed contexts ✔ creates a test node with friendly uniqueid for a failed root context
AssertHelpers > containsExactlyInAnyOrder > simple ✔ returns true when the elements are the same
AssertHelpers > containsExactlyInAnyOrder > simple ✔ returns true false the elements are not the same
AssertHelpers > containsExactlyInAnyOrder > with a class that does not implement comparable ✔ works with list
AssertHelpers > containsExactlyInAnyOrder > with a class that does not implement comparable ✔ works with vararg
AssertHelpers > endsWith ✔ works with list
AssertHelpers > endsWith ✔ works with vararg
another test context defined in a kotlin class ✔ describes behavior
first of multiple contexts defined in one object ✔ describes behavior
examples for the test context dsl ✔ published println calls in the junit runner
retryFor ✔ can call suspend functions
FailGoodJunitTestEngine > can discover tests ✔ returns a root descriptor
FailGoodTestUnitFinder ✔ creates a test unit for each test
closing test resources > autoclosable ✔ works inside a test
closing test resources > autoclosable > error handling > when the test fails and autoclose and aftereach work ✔ calls autoclose callbacks
Root Context Order ✔ is determined by the order field low to high
the ContextFinder > test filtering ✔ supports a classpathRootSelector with a package filter
the ContextFinder > parsing unique id selectors ✔ works when the root contexts contains brackets
a coroutine scope inside failgood tests ✔ works as expected
nice toString functions ✔ ktype has a niceString function
Injecting Test Dependencies ✔ the context can create test dependencies
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ executes all the tests in that context in one go
Given support > error handling ✔ treats errors in the given block as test failures
ExceptionPrettyPrinter ✔ pretty prints the exception with stack trace
Given support ✔ passes the value of the contests given block to the test
ExceptionPrettyPrinter ✔ shortens the stack trace
ExceptionPrettyPrinter ✔ shows only stack trace lines for assertion errors that are in the test file
Junit4Reporter ✔ reports test results
ResourcesCloser > closeAutoCloseables ✔ closes autoclosables
ResourcesCloser > callAfterEach ✔ calls afterEach
ResourcesCloser > callAfterEach > error handling ✔ calls all after each methods even if one fails
ResourcesCloser > callAfterEach > error handling ✔ throws the first exception when multiple afterEach callbacks fail
StringListTestFilter ✔ executes a path that leads to a context
StringListTestFilter ✔ executes a parent of the context
StringListTestFilter ✔ does not execute a different path
StringListTestFilter ✔ executes a root context when the path fits
StringListTestFilter ✔ does not execute a root context when the path is different
TestDSL ✔ publishes a test event for stdout printing
TestDSL ✔ replaces an empty test event to make junit happy
TestDSL ✔ tells the name of the test
ResourcesCloser ✔ handles errors in dependency block
the mocking framework > records function calls ✔ verifies function calls
the mocking framework > records function calls ✔ throws when a verified function was not called
the mocking framework ✔ can return function calls for normal asserting
the mocking framework ✔ has call helpers for up to 5 parameters
the mocking framework ✔ has suspend call helpers for up to 5 parameters
the mocking framework ✔ returns something useful as response to toString
the mocking framework > records function parameters ✔ verifies function parameters
the mocking framework > supports suspend functions ✔ verifies suspend functions
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ does not affect other contexts
the mocking framework > supports suspend functions ✔ throws when parameters don't match
the mocking framework > defining results > with the ✔ defines results via calling the mock
the mocking framework > defining results > with the ✔ defines results via calling the mock even works for nullable functions
the mocking framework > defining results > with the ✔ mocks can throw
the mocking framework > handles equals correctly ✔ returns true for equals with the same mock
the mocking framework > handles equals correctly ✔ returns false for equals with a different object
closing test resources > autoclosable > error handling > when the test fails and autoclose and aftereach work ✔ calls afterEach callbacks
The Junit Platform Engine ✔ can execute a simple test defined in a class
the mocking framework > defining results ✔ can be done when the mock is created
the mocking framework > error handling ✔ detects when the parameter to the is not a mock
second of multiple contexts defined in one object ✔ describes behavior
ContextExecutor > with a valid root context > executing all the tests ✔ returns deferred test results
ContextExecutor > with a valid root context > executing all the tests ✔ returns tests in the same order as they are declared in the file
the mocking framework > parameter placeholders ✔ exist for all basic kotlin types
ContextExecutor > with a valid root context > executing all the tests ✔ returns contexts in the same order as they appear in the file
ContextExecutor ✔ handles failing root contexts
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ calls the given for each test
retryFor ✔ rethrows exception when time is up
sub context isolation > on a root context with default isolation (true) > error handling ✔ does not allow to turn isolation on when it was already off
FailGoodJunitTestEngine > can discover tests ✔ returns all root contexts
retryFor ✔ retries at least once
ContextExecutor > with a valid root context > executing all the tests ✔ reports time of successful tests
ContextExecutor > with a valid root context > executing a subset of tests ✔ does not execute the context at all if the root name does not match
ContextExecutor > with a valid root context > executing all the tests > reports failed tests ✔ reports exception for failed tests
ContextExecutor > with a valid root context > reports line numbers ✔ returns file info for all subcontexts
closing test resources > autoclosable > error handling ✔ reports the test failure even when the close callback fails too
closing test resources > autoclosable > error handling > when the test fails and aftereach fails ✔ calls autoclose callbacks
ContextExecutor > with a valid root context > reports line numbers ✔ returns line number for contexts
closing test resources > autoclosable > error handling > when the test fails and autoclose and aftereach work ✔ reports the test failure
ContextExecutor > with a valid root context > executing a subset of tests ✔ can execute a subset of tests
ContextExecutor > with a valid root context > reports line numbers ✔ reports file name for all tests
ContextExecutor > with a valid root context > reports line numbers ✔ reports line number for all tests
ContextExecutor > supports lazy execution ✔ postpones test execution until the deferred is awaited when lazy is set to true
closing test resources > autoclosable > error handling > when the test succeeds, autoclose fails and aftereach works ✔ calls autoclose callbacks
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ calls callbacks at the correct time
ContextExecutor > timing ✔ reports context structure before tests finish
The Junit Platform Engine ✔ executes contexts that contain tests with the same names
closing test resources > autoclosable > error handling > when the test fails and aftereach fails ✔ calls afterEach callbacks
FailGoodJunitTestEngine > test execution ✔ starts and stops contexts in the correct order
closing test resources > autoclosable > error handling > when the test succeeds, autoclose fails and aftereach works ✔ calls afterEach callbacks
closing test resources > autoclosable > error handling > when the test and autoclose succeeds and aftereach fails ✔ calls autoclose callbacks
a test suite with 1000 tests in one context ✔ runs pretty fast
closing test resources > autoclosable > error handling > when the test and autoclose succeeds and aftereach fails ✔ calls afterEach callbacks
closing test resources > autoclosable > error handling > when the test succeeds, autoclose fails and aftereach works ✔ reports the test failure
The Junit Platform Engine > duplicate test names ✔ are correctly handled in root contexts
closing test resources > after suite callback ✔ is called exactly once at the end of the suite, after all tests are finished
FailGoodJunitTestEngine > test execution ✔ sends one skip event and no start event for skipped tests
retryFor ✔ retries for given time and returns result when it eventually succeeds
closing test resources > autoclosable > error handling > when the test fails and aftereach fails ✔ reports the test failure
The Junit Platform Engine ✔ returns tests in the order that they are declared in the file
closing test resources > autoclosable > error handling > when the test and autoclose succeeds and aftereach fails ✔ reports the test failure
closing test resources > after suite callback ✔ can throw exceptions that are ignored
The Junit Platform Engine > duplicate test names ✔ are correctly handled in sub contexts
The Junit Platform Engine > error handling ✔ correctly reports exceptions in afterEach as test failures
The Junit Platform Engine > error handling ✔ correctly handles test that fail in their second pass
The Junit Platform Engine ✔ returns uniqueIds that it understands (uniqueid round-trip test)
The Junit Platform Engine > duplicate test names ✔ works even in deeply nested contexts
The Junit Platform Engine ✔ works for a failing context or root context
ContextExecutor > when an exception happens inside a subcontext ✔ it is reported as a failing test inside that context
ContextExecutor > when an exception happens inside a subcontext ✔ reports the context as a context
ContextExecutor > an ignored sub-context ✔ it is reported as a skipped test inside that context
ContextExecutor > an ignored sub-context ✔ reports the context as a context
ContextExecutor > detects duplicated tests ✔ fails with duplicate tests in one context
ContextExecutor > detects duplicated tests ✔ does not fail when the tests with the same name are in different contexts
ContextExecutor > detects duplicate contexts ✔ fails with duplicate contexts in one context
ContextExecutor > detects duplicate contexts ✔ does not fail when the contexts with the same name are in different contexts
ContextExecutor > filtering by tag - can filter tests in a subcontext
ContextExecutor > detects duplicate contexts ✔ fails when a context has the same name as a test in the same contexts
ContextExecutor > handles strange contexts correctly ✔ tests can not contain nested contexts
ContextExecutor > filtering by tag ✔ can filter tests in the root context by tag
ContextExecutor > handles strange contexts correctly ✔ a context with only one ignored test
ContextExecutor > filtering by tag ✔ can filter contexts in the root context by tag
182 passing (1.5s)
2 pending
1 failing
185 tests completed, 1 failed, 2 skipped
so I have to scroll up a lot to find the failure that is mentioned in the summary.
it could instead look like this:
> Task :failgood:test FAILED
SuiteResult > when there are failing contexts ✔ allOk is false
Until ✔ is NotIgnored before now
Until ✔ returns a reason after now
a test context returned by a function ✔ describes behavior
a test context ✔ can tell its name with path
test context defined in a kotlin object ✔ describes behavior
Suite ✔ Empty Suite fails
test context declared on top level ✔ is also a nice way to define your test context
test context defined in a kotlin class ✔ describes behavior
Suite ✔ Suite {} creates a root context
a test context ✔ can be created from a path
a test context ✔ parents is ordered
The describe top level method ✔ creates a context named '<className>' when called with a class
RootContext ✔ knows its file and line number
ObjectContextProvider ✔ provides a context from an class in a kotlin class (MyTest::class.java)
ContextTreeReporter ✔ outputs test results in tree form
ObjectContextProvider ✔ provides a context from an object in a java class (MyTest::class.java)
ContextTreeReporter ✔ outputs empty root context
ObjectContextProvider ✔ provides a context from an object in a kotlin class (MyTest::class)
ContextTreeReporter ✔ outputs empty context
ContextTreeReporter ✔ outputs time
ObjectContextProvider ✔ provides a list of contexts from an object in a kotlin class (MyTest::class)
Error Handling > Non deterministic test names ✔ make their test count as failed
ObjectContextProvider ✔ provides a top level context from a kotlin class
test isolation for root contexts > in the default isolation mode (full isolation) ✔ test dependencies are recreated for each test
SingleTestExecutor > test execution ✔ executes a single test
ObjectContextProvider > correcting source info ✔ corrects the root context source info if its not coming from the loaded class
SingleTestExecutor > test execution ✔ executes a nested single test
SingleTestExecutor ✔ also supports describe / it
test isolation for root contexts > in the default isolation mode (full isolation) ✔ passes testInfo and success to afterEach
SingleTestExecutor > error handling ✔ reports exceptions in the context as test failures
test finder ✔ can find Test classes
ObjectContextProvider > correcting source info ✔ does not touch the source info if it comes from the loaded class
SingleTestExecutor > error handling ✔ reports exceptions in the autoclose lambda as test failures
test isolation for root contexts > a root context with isolation set to false ✔ runs tests without recreating the dependencies
ObjectContextProvider > Error handling ✔ throws when a class contains no contexts
ContextVisitor<*> ✔ can be easily created
test isolation for root contexts > a root context with isolation set to false ✔ passes testInfo and success to afterEach
FailGoodJunitTestEngine ✔ parses a filter string
ObjectContextProvider > Error handling ✔ wraps exceptions that happen at class instantiation: ClassThatThrowsAtCreationTime
ContextDSL::describe ✔ works for class
junit platform observations > UniqueId ✔ replaces + with space when parsing
Error Handling ✔ tests with wrong receiver
ObjectContextProvider > Error handling ✔ wraps exceptions that happen at class instantiation: ClassThatThrowsAtContextGetter
ObjectContextProvider > Error handling ✔ gives a helpful error when a class could not be instantiated
ObjectContextProvider > Error handling ✔ ignores private classes
the ContextFinder ✔ finds a single test with a uniqueId selector
the ContextFinder ✔ does not run a class that has no failgood test annotation
The Junit Platform Engine - works with Blockhound installed
Suite > coroutine scope ✔ does not wait for tests before returning context info
Suite > error handling ✔ treats errors in getContexts as failed context
The Junit Platform Engine ✘ can execute a simple test defined in an object
java.lang.AssertionError: Assertion failed
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invokeSuspend(JunitPlatformFunctionalTest.kt:43)
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invoke(JunitPlatformFunctionalTest.kt)
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invoke(JunitPlatformFunctionalTest.kt)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invokeSuspend(ContextStateCollector.kt:59)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invoke(ContextStateCollector.kt)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invoke(ContextStateCollector.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:100)
at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:146)
at kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1.invokeSuspend(ContextStateCollector.kt:56)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
FailGoodTestPluginFactory ✔ provides description and name
createResponse > contexts ✔ creates friendly uniqueid for a root context
FailGoodTestPluginFactory > test framework configuration ✔ returns a suite object that returns no suites
FailGoodTestPluginFactory > test framework configuration ✔ returns the TestUnitFinder
createResponse > contexts ✔ creates friendly uniqueid for a sub context
new mock syntax ✔ looks like this
soft assert syntax ✔ could look like this
Error Handling ✔ handles errors in resource correctly
closing test resources > autoclosable ✔ is closed in reverse order of creation
closing test resources > autoclosable ✔ closes autocloseables without callback
createResponse ✔ creates friendly uuids for tests
createResponse > failed contexts ✔ creates a test node with friendly uniqueid for a failed root context
AssertHelpers > containsExactlyInAnyOrder > simple ✔ returns true when the elements are the same
AssertHelpers > containsExactlyInAnyOrder > simple ✔ returns true false the elements are not the same
AssertHelpers > containsExactlyInAnyOrder > with a class that does not implement comparable ✔ works with list
AssertHelpers > containsExactlyInAnyOrder > with a class that does not implement comparable ✔ works with vararg
AssertHelpers > endsWith ✔ works with list
AssertHelpers > endsWith ✔ works with vararg
another test context defined in a kotlin class ✔ describes behavior
first of multiple contexts defined in one object ✔ describes behavior
examples for the test context dsl ✔ published println calls in the junit runner
retryFor ✔ can call suspend functions
FailGoodJunitTestEngine > can discover tests ✔ returns a root descriptor
FailGoodTestUnitFinder ✔ creates a test unit for each test
closing test resources > autoclosable ✔ works inside a test
closing test resources > autoclosable > error handling > when the test fails and autoclose and aftereach work ✔ calls autoclose callbacks
Root Context Order ✔ is determined by the order field low to high
the ContextFinder > test filtering ✔ supports a classpathRootSelector with a package filter
the ContextFinder > parsing unique id selectors ✔ works when the root contexts contains brackets
a coroutine scope inside failgood tests ✔ works as expected
nice toString functions ✔ ktype has a niceString function
Injecting Test Dependencies ✔ the context can create test dependencies
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ executes all the tests in that context in one go
Given support > error handling ✔ treats errors in the given block as test failures
ExceptionPrettyPrinter ✔ pretty prints the exception with stack trace
Given support ✔ passes the value of the contests given block to the test
ExceptionPrettyPrinter ✔ shortens the stack trace
ExceptionPrettyPrinter ✔ shows only stack trace lines for assertion errors that are in the test file
Junit4Reporter ✔ reports test results
ResourcesCloser > closeAutoCloseables ✔ closes autoclosables
ResourcesCloser > callAfterEach ✔ calls afterEach
ResourcesCloser > callAfterEach > error handling ✔ calls all after each methods even if one fails
ResourcesCloser > callAfterEach > error handling ✔ throws the first exception when multiple afterEach callbacks fail
StringListTestFilter ✔ executes a path that leads to a context
StringListTestFilter ✔ executes a parent of the context
StringListTestFilter ✔ does not execute a different path
StringListTestFilter ✔ executes a root context when the path fits
StringListTestFilter ✔ does not execute a root context when the path is different
TestDSL ✔ publishes a test event for stdout printing
TestDSL ✔ replaces an empty test event to make junit happy
TestDSL ✔ tells the name of the test
ResourcesCloser ✔ handles errors in dependency block
the mocking framework > records function calls ✔ verifies function calls
the mocking framework > records function calls ✔ throws when a verified function was not called
the mocking framework ✔ can return function calls for normal asserting
the mocking framework ✔ has call helpers for up to 5 parameters
the mocking framework ✔ has suspend call helpers for up to 5 parameters
the mocking framework ✔ returns something useful as response to toString
the mocking framework > records function parameters ✔ verifies function parameters
the mocking framework > supports suspend functions ✔ verifies suspend functions
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ does not affect other contexts
the mocking framework > supports suspend functions ✔ throws when parameters don't match
the mocking framework > defining results > with the ✔ defines results via calling the mock
the mocking framework > defining results > with the ✔ defines results via calling the mock even works for nullable functions
the mocking framework > defining results > with the ✔ mocks can throw
the mocking framework > handles equals correctly ✔ returns true for equals with the same mock
the mocking framework > handles equals correctly ✔ returns false for equals with a different object
closing test resources > autoclosable > error handling > when the test fails and autoclose and aftereach work ✔ calls afterEach callbacks
The Junit Platform Engine ✔ can execute a simple test defined in a class
the mocking framework > defining results ✔ can be done when the mock is created
the mocking framework > error handling ✔ detects when the parameter to the is not a mock
second of multiple contexts defined in one object ✔ describes behavior
ContextExecutor > with a valid root context > executing all the tests ✔ returns deferred test results
ContextExecutor > with a valid root context > executing all the tests ✔ returns tests in the same order as they are declared in the file
the mocking framework > parameter placeholders ✔ exist for all basic kotlin types
ContextExecutor > with a valid root context > executing all the tests ✔ returns contexts in the same order as they appear in the file
ContextExecutor ✔ handles failing root contexts
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ calls the given for each test
retryFor ✔ rethrows exception when time is up
sub context isolation > on a root context with default isolation (true) > error handling ✔ does not allow to turn isolation on when it was already off
FailGoodJunitTestEngine > can discover tests ✔ returns all root contexts
retryFor ✔ retries at least once
ContextExecutor > with a valid root context > executing all the tests ✔ reports time of successful tests
ContextExecutor > with a valid root context > executing a subset of tests ✔ does not execute the context at all if the root name does not match
ContextExecutor > with a valid root context > executing all the tests > reports failed tests ✔ reports exception for failed tests
ContextExecutor > with a valid root context > reports line numbers ✔ returns file info for all subcontexts
closing test resources > autoclosable > error handling ✔ reports the test failure even when the close callback fails too
closing test resources > autoclosable > error handling > when the test fails and aftereach fails ✔ calls autoclose callbacks
ContextExecutor > with a valid root context > reports line numbers ✔ returns line number for contexts
closing test resources > autoclosable > error handling > when the test fails and autoclose and aftereach work ✔ reports the test failure
ContextExecutor > with a valid root context > executing a subset of tests ✔ can execute a subset of tests
ContextExecutor > with a valid root context > reports line numbers ✔ reports file name for all tests
ContextExecutor > with a valid root context > reports line numbers ✔ reports line number for all tests
ContextExecutor > supports lazy execution ✔ postpones test execution until the deferred is awaited when lazy is set to true
closing test resources > autoclosable > error handling > when the test succeeds, autoclose fails and aftereach works ✔ calls autoclose callbacks
sub context isolation > on a root context with default isolation (true) > turning off isolation for a subcotext ✔ calls callbacks at the correct time
ContextExecutor > timing ✔ reports context structure before tests finish
The Junit Platform Engine ✔ executes contexts that contain tests with the same names
closing test resources > autoclosable > error handling > when the test fails and aftereach fails ✔ calls afterEach callbacks
FailGoodJunitTestEngine > test execution ✔ starts and stops contexts in the correct order
closing test resources > autoclosable > error handling > when the test succeeds, autoclose fails and aftereach works ✔ calls afterEach callbacks
closing test resources > autoclosable > error handling > when the test and autoclose succeeds and aftereach fails ✔ calls autoclose callbacks
a test suite with 1000 tests in one context ✔ runs pretty fast
closing test resources > autoclosable > error handling > when the test and autoclose succeeds and aftereach fails ✔ calls afterEach callbacks
closing test resources > autoclosable > error handling > when the test succeeds, autoclose fails and aftereach works ✔ reports the test failure
The Junit Platform Engine > duplicate test names ✔ are correctly handled in root contexts
closing test resources > after suite callback ✔ is called exactly once at the end of the suite, after all tests are finished
FailGoodJunitTestEngine > test execution ✔ sends one skip event and no start event for skipped tests
retryFor ✔ retries for given time and returns result when it eventually succeeds
closing test resources > autoclosable > error handling > when the test fails and aftereach fails ✔ reports the test failure
The Junit Platform Engine ✔ returns tests in the order that they are declared in the file
closing test resources > autoclosable > error handling > when the test and autoclose succeeds and aftereach fails ✔ reports the test failure
closing test resources > after suite callback ✔ can throw exceptions that are ignored
The Junit Platform Engine > duplicate test names ✔ are correctly handled in sub contexts
The Junit Platform Engine > error handling ✔ correctly reports exceptions in afterEach as test failures
The Junit Platform Engine > error handling ✔ correctly handles test that fail in their second pass
The Junit Platform Engine ✔ returns uniqueIds that it understands (uniqueid round-trip test)
The Junit Platform Engine > duplicate test names ✔ works even in deeply nested contexts
The Junit Platform Engine ✔ works for a failing context or root context
ContextExecutor > when an exception happens inside a subcontext ✔ it is reported as a failing test inside that context
ContextExecutor > when an exception happens inside a subcontext ✔ reports the context as a context
ContextExecutor > an ignored sub-context ✔ it is reported as a skipped test inside that context
ContextExecutor > an ignored sub-context ✔ reports the context as a context
ContextExecutor > detects duplicated tests ✔ fails with duplicate tests in one context
ContextExecutor > detects duplicated tests ✔ does not fail when the tests with the same name are in different contexts
ContextExecutor > detects duplicate contexts ✔ fails with duplicate contexts in one context
ContextExecutor > detects duplicate contexts ✔ does not fail when the contexts with the same name are in different contexts
ContextExecutor > filtering by tag - can filter tests in a subcontext
ContextExecutor > detects duplicate contexts ✔ fails when a context has the same name as a test in the same contexts
ContextExecutor > handles strange contexts correctly ✔ tests can not contain nested contexts
ContextExecutor > filtering by tag ✔ can filter tests in the root context by tag
ContextExecutor > handles strange contexts correctly ✔ a context with only one ignored test
ContextExecutor > filtering by tag ✔ can filter contexts in the root context by tag
182 passing (1.5s)
2 pending
1 failing
failures:
The Junit Platform Engine ✘ can execute a simple test defined in an object
java.lang.AssertionError: Assertion failed
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invokeSuspend(JunitPlatformFunctionalTest.kt:43)
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invoke(JunitPlatformFunctionalTest.kt)
at failgood.junit.it.JunitPlatformFunctionalTest$context$1$1.invoke(JunitPlatformFunctionalTest.kt)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invokeSuspend(ContextStateCollector.kt:59)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invoke(ContextStateCollector.kt)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1$testResult$1.invoke(ContextStateCollector.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:100)
at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:146)
at kotlinx.coroutines.TimeoutKt.withTimeout(Timeout.kt:44)
at failgood.internal.execution.context.ContextStateCollector$executeTest$1.invokeSuspend(ContextStateCollector.kt:56)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
185 tests completed, 1 failed, 2 skipped
The text was updated successfully, but these errors were encountered:
Any plans on implementing this? It would be a really great addition as it would remove the need to scroll back to find the failures 😄 +1 from my side to this feature 👌
Yeah, I know how painful it is. I have experienced the same in some big projects where the plugin is used. I am trying to find some time to actively maintain the plugin again.
@radarsh Can you high level describe how this could be implemented (in case you already had some idea)? I might have time to implement this myself soon.
It would be really cool if there was an option to show a list of the test failures again in the summary.
for example in my tests suite a test failure looks like this:
so I have to scroll up a lot to find the failure that is mentioned in the summary.
it could instead look like this:
The text was updated successfully, but these errors were encountered: