upgrade FsCheck.Xunit and FsCheck.NUnit to new major versions
Both Xunit and NUnit have had major releases which are not reflected in FsCheck.Xunit and FsCheck.NUnit.
- [ ] Xunit: new major release v3 - needs creation of new assembly + package FsCheck.Xunit3
- [x] NUnit: new major release v4
The corresponding FsCheck implementations might be updatable?
Example:
Do the new versions of those two libraries include breaking changes? If they use semantic versioning, I'd expect them to, but haven't investigated.
If so, do the breaking changes affect FsCheck.Xunit or FsCheck.NUnit? If so, we need to investigate how to resolve such issues. If not, it's possible that we could relax the version restrictions to allow the new major versions...
To be clear, I don't have the time to do that at the moment.
I just wanted to inform...
I am just learning how to use this library.
This might not be an issue for other people...
@ploeh feel free to close this ticket
This is definitely holding us from upgrading to XUnit V3, which does have breaking changes. We tried recompiling FsCheck.XUnit ourselves targeting XUnit V3, but it does not compile as is.
I did NUnit, but xunit seems to have moved on to a different nuget package xunit.v3 so it's a bigger lift.
FWIW, in AutoFixture, we ran into a similar problem when xUnit.net revved from v1 to v2. There were breaking changes that we couldn't get around, so we left the original AutoFixture.Xunit on xUnit.net v1 and created a new AutoFixture.Xunit2 package for v2.
@ploeh Other libraries (Verify) did the same thing, they followed the (unfortunate?) convention that XUnit set.
Yes, it seems they left us no other choice. It does have the advantage it's easy to maintain both v2 and v3 in parallel.
For anyone else looking for a workaround:
What we did was to ditch the FsCheck.Xunit package temporarily, until FsCheck.XunitV3 (?) is released; then we:
- Stripped out the
[Property]attributes and replaced them with[Fact] - Return types of tests are now
void - Then we
.Check(Config.Default)d manually theProperty.
I have taken a stab at an implementation. It seems to work, but I only replicated the test-cases that already existed, and more might be warranted.