While refactoring Rultor to use Cactoos instead of Guava, I’m having an issue with negative tests of GithubProfileTest
and GithubProfileValidationTest
.
After the refactor, the positive test cases pass for both mentioned test classes, but the negative test cases that expect a particular exception fail.
The affected refactored code under test is GithubProfile.assets
method and GithubProfile.asset
method.
I refactored assets
method to look like this:
public Map<String, InputStream> assets() throws IOException {
final XML xml = this.read();
final List<XML> nodes = xml.nodes("/p/entry[@key='assets']/entry");
return new MapOf<>(
new Mapped<>(
nodes,
input ->
new MapEntry<>(
input.xpath("@key").get(0),
this.asset(input.xpath("text()").get(0))
)
)
);
}
On different test cases the this.asset
call is expected to throw Profile.ConfigException
. Instead, upon calling the assets method, the test fails with a Unable to evaluate the expression Method threw 'java.io.UncheckedIOException' exception
, and the Profile.ConfigException
is simply ignored/hidden.
It seems that MapOf
somehow fails to evaluate, or "hides", the exception that the call to this.asset method raised, raising itself an UncheckedIOException
, so I'm unable to fix this and have the Profile.ConfigException
raised.
When debugging, the UncheckedIOException
doesn't contain any info whatsoever of a Profile.ConfigException
being raised.
Any hints on why I might be getting this behaviour or possible solutions?