Skip to content

Grouping assertions dynamically #266

@bnorm

Description

@bnorm

The Expect TestVerb is great for short JUnit tests but I write non-JUnit system tests that run for hours. I would like to use Truth for all the assertion checks I make throughout my tests but I want a way to be able to group some checks together so I get as much information at the point of failure while still stopping the test at the point of failure.

Sort of the design I'm thinking is this

TestVerb testVerb = ...;
try (GroupVerb groupVerb = GroupVerb.from(testVerb)) {
    FooSubject subject = groupVerb.about(foos()).that(foo);
    subject.hasProperty1();
    subject.hasProperty2();
    subject.hasProperty3();
}

Checks made with a GroupVerb are gathered like with Expect and when GroupVerb is "closed," the group failures are packaged like Expect and sent to the failure strategy of the wrapped test verb. I could use this to check multiple properties on the same subject or even iterate a list of subjects, checking them all.

I have a working prototype for GroupVerb but it requires being in the com.google.common.truth package because getFailureStrategy() on AbstractVerb is protected. I thought this might be a good feature for the library though.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions