use strict; use warnings; { package Parent; use Moose; use MooseX::Constructor::AllErrors; our $BUILD = 0; sub BUILD { $BUILD = 1; } } { package Child; use Moose; extends 'Parent'; our $BUILD = 0; sub BUILD { $BUILD = 1; } } use Test::More; use Test::Moose qw(with_immutable); my @classes = qw(Parent Child); with_immutable { $Parent::BUILD = 0; $Child::BUILD = 0; my $obj = Parent->new; is($Parent::BUILD, 1, "Parent's BUILD was run when constructed directly"); $Parent::BUILD = 0; $Child::BUILD = 0; my $obj = Child->new; is($Child::BUILD, 1, "Child's BUILD was run when Child is constructed"); is($Parent::BUILD, 1, "Parent's BUILD was run when Child is constructed"); } @classes; done_testing;