Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Changes in state strings or Unity Editor utilities are not considered breaking changes. Experimental features are also not under semantic versioning.
Unreleased
Added
- Added
UntilCompletionOfoperator, which allows executing optional responders until an instruction is completed.
4.5.0 - 2024-05-25
Added
- Added support for Unity 2022
- Added
RepeatUntilextension on test instruction - Added documentation for experimental Godot support
Changed
- Never collapse responders in state strings (even when completed or not executed). More info is better here.
Responsible.Bddno longer considered experimental.
Fixed
- Fix path trimming (start from "Assets") in failure messages on Windows
- Internal tests: Fix some tests that didn't work properly depending on platform and/or locale
Removed
- Dropped support for Unity 2019 and 2020
4.4.0 - 2023-03-23
Added
RunAsLoopandRunAsSimulatedUpdateLoopoperators, for running test instructions synchronously as a loop with a tick callback.Repeatedlyoperator, which turns a test responder into an optional responder that executes repeatedly.
Changed
- Include hint in state strings about being able to provide extra context to wait conditions
- Improve exception message handling by not truncating long messages (I don't remember why I did this originally)
- Add a bit of padding to the Unity operation status window
Fixed
- Fix some state strings on Windows, where
Environment.NewLineis more than one character. - Fix some cancellation issues with Unity 2021 (where cancellation might happen asynchronously later in the same frame)
4.3.0 - 2022-04-17
Added
- New
GroupedAsoperator to allow more control over the state strings of compound operations. - Experimental: New BDD-style keywords to build scenarios.
- Experimental:
responsible-gherkindotnet tool to convert Gherkin feature specifications into Responsible test stubs. This is a separate NuGet package, and will not have a changelog until there's a 1.0 release. Feel free to try it out by installing withdotnet tool install -g Beatwaves.ResponsibleGherkin
4.2.0 - 2021-10-13
Added
- Allow passing a list of exceptions to be rethrown, instead of wrapped in
TestFailureException. This allows e.g. NUnit'sIgnoreExceptionto function properly.
Fixed
- Long descriptions in the operation state window no longer cause tests to fail because Unity spits out an error about too many vertices in a Label.
- Make NUnit's
Assert.Ignore,Assert.Inconclusive, andAssert.Passwork properly on Unity (see Added section above for .NET).
4.1.2 - 2021-07-17
Fixed
TestInstructionExecutor.Disposeno longer throws an exception if called twice.Sequencewill no longer include duplicate entires in the test instruction stack section of error messages.
Changed
- Use
X s ≈ Y framesinstead ofX s and Y framesin output to clarify the meaning. - Add stack trace to
UnhandledLogMessageException.Message - Unity: Intercept errors logged from non-Unity threads also.
4.1.1 - 2021-05-20
Fixed
- Fix error handling in
ContinueWithandAndThento publish the correct exception. This was previously causing an internal exception to be published instead under certain conditions.
Changed
- Change responder state string from
EXPECTED WITHINtoCONDITION EXPECTED WITHINto better reflect what it actually does.
4.1.0 - 2021-05-13
Fixed
- Fix description of
Return. - Handle source paths not under project gracefully when executing in Unity Editor.
- Fix state string if
ContinueWithorAndThencontinuation function throws an exception.
Changed
- Handle aborting tests better in the Unity state window.
- Simplify unnecessarily complex timeout time formatting.
- Allow passing
IGlobalContextProvidertoUnityTestInstructionExecutor.
4.0.0 - 2021-03-28
Changed
- Removed the UniRx dependency, now uses
async/awaitinternally instead. - Unity-specific functionality was moved to work through abstractions.
Unit-typed operators now useobjectinstead. This works better most of the time, due to covariance!- Operation state notifications use a callback instead of an observable.
Removed
- All observable-related functions (
ToObservable,WaitForLast). AsUnit...operators: you can useBoxResultor just implicit covariance instead.
Added
- Support for .NET standard 2.0 (and NuGet publishing)
ToTaskmethods, which replaceToObservable. Note: If you were using these, you can use the UniRxToObservablemethod to convert a task to an observable.UnityTestInstructionExecutor, which should provide the same functionality asTestInstructionExecutordid before.BoxResultoperators: replaceAsUnit...operators when working with value types.WaitForTaskoperator.- Support for adding extra global context into failure messages.
3.0.1 - 2021-03-14
Fixed
- Fix inclusion of documentation in releases, no changes in the library itself.
3.0.0 - 2021-03-14
Added
- HTML documentation generated with DocFX
- Test operation status window in Unity Editor, under
Window/Responsible/Operation State
Changed
- Some parameters renamed for better documentation.
Removed
- Classes and functionality which was intended to be internal were marked as internal.
2.0.0 - 2021-02-26
Changed
- Simplifies the public API by reducing the number of overloads used. This should make auto-completion and compiler errors more friendly.
- Removes
WaitForCondition,WaitForConditionOnandWaitForCoroutineoverrides, which make a result using a selector:Selectcan be used instead. - Synchronous
ThenRespondWithoverrides renamed toThenRespondWithFuncandThenRespondWithAction - Splits
WaitForCoroutineto two versions:WaitForCoroutineandWaitForCoroutineMethod.
1.2.0 - 2020-12-02
Fixed
- Fix source context of
Responsible.Do("DoAndReturn"->"Do") - Show canceled wait conditions as canceled instead of running in output. A wait may get canceled e.g. as part of an optional test responder.
Changed
- Simplify output when
ExpectWithinSecondis used, by showingEXPECTED WITHIN ...on the same line as the expected operation, instead ofEXPECT WITHIN ...with the operation nested below it. This is only applicable to simple wait conditions and responders.
1.1.0 - 2020-11-11
Added
WaitForConditionOnfor a more streamlined syntax for waiting for a condition on some object, and then returning that object (or something derived from that object).WaitForFrames, for those cases when you actually really need it- Allows executing
ITestOperationStateusingToYieldInstruction/Observable, allowing you to log the state while executing it. - Sample project with sample tests.
Fixed
- Add context to output when
ExpectWithinSecondstimes out. - Fix referential transparency of
WaitForConstraint:IResolveConstraint.Resolve()can mutate the condition and produce weird results when called multiple times.
Changed
- Makes
...Secondsoperators usedoubleinstead ofint(practically backwards compatible). - Improve documentation, especially about getting started.
- Move tests out of package, so that they don't get included in projects that use Responsible.
1.0.0 - 2020-09-23
Added
- Initial public release with basic functionality.