in reply to Why is my test failing?

It's a bug in the test. use happens at compile time (during the interpretation of the code) and fails at that point. The eval would catch runtime failures, but the code never gets to runtime.

The test should probably use require and do an import by hand, something like (untested):

eval { require Test::Perl::Critic; Test::Perl::Critic->import(-profile => 't/perlcriticrc'); ... };