Я не эксперт по Guice, но в Spring DI можно вводить экземпляры, которые не являются экземплярами ожидаемого класса. Например, в вашем примере, если House
не класс, а интерфейс, то при определенных обстоятельствах (например, если вы используете транзакцию) пружина дает вам Proxy, а не экземпляр класса, который реализует интерфейс. Единственная гарантия, что у вас есть это то, что он будет реализовывать правильный интерфейс. Поэтому я бы использовал:
Assert.assertTrue(house.door().isAssignableFrom(WoodenDoor.class));