diff --git a/component-test/src/main/java/TestAnubisInitialize.java b/component-test/src/main/java/TestAnubisInitialize.java
index 69ad24f..018585d 100644
--- a/component-test/src/main/java/TestAnubisInitialize.java
+++ b/component-test/src/main/java/TestAnubisInitialize.java
@@ -77,14 +77,14 @@
   @ClassRule
   public static CassandraInitializer cassandraInitializer = new CassandraInitializer();
 
-  @SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "SpringJavaAutowiringInspection", "SpringJavaAutowiredMembersInspection"})
+  @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
   @Autowired
-  Example example;
+  private Example example;
 
   @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
   @Autowired
   @Qualifier(value = LOGGER_QUALIFIER)
-  Logger logger;
+  private Logger logger;
 
   @Test
   public void testBrokenToken()
@@ -108,7 +108,7 @@
           anubis.createSignatureSet(keyTimestamp, signature);
         }
 
-        Assert.assertFalse("A call with a broken token should result in an exception thrown.", true);
+        Assert.fail("A call with a broken token should result in an exception thrown.");
       } catch (final InvalidTokenException e) {
         Assert.assertFalse("Service init code should not have been reached with a broken token.",
                 example.initialized());
diff --git a/component-test/src/main/java/TestAnubisInitializeWithoutServiceBacking.java b/component-test/src/main/java/TestAnubisInitializeWithoutServiceBacking.java
index 393b013..f18d0f1 100644
--- a/component-test/src/main/java/TestAnubisInitializeWithoutServiceBacking.java
+++ b/component-test/src/main/java/TestAnubisInitializeWithoutServiceBacking.java
@@ -67,5 +67,7 @@
     final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
             = new TenantApplicationSecurityEnvironmentTestRule(testEnvironment);
     tenantApplicationSecurityEnvironment.initializeTenantInApplication();
+    tenantApplicationSecurityEnvironment.initializeTenantInApplication();
+    tenantApplicationSecurityEnvironment.initializeTenantInApplication();
   }
 }
diff --git a/component-test/src/main/java/TestAnubisTenantPermissions.java b/component-test/src/main/java/TestAnubisTenantPermissions.java
index 4db3a71..9d80837 100644
--- a/component-test/src/main/java/TestAnubisTenantPermissions.java
+++ b/component-test/src/main/java/TestAnubisTenantPermissions.java
@@ -84,10 +84,9 @@
   @Rule
   public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment = new TenantApplicationSecurityEnvironmentTestRule(testEnvironment);
 
-
-  @SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "SpringJavaAutowiringInspection", "SpringJavaAutowiredMembersInspection"})
+  @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
   @Autowired
-  Example example;
+  private Example example;
 
   @Test
   public void readPermissionShouldWorkToRead()
diff --git a/component-test/src/main/java/TestPermittableEndpoints.java b/component-test/src/main/java/TestPermittableEndpoints.java
index ed2c16c..b310ca5 100644
--- a/component-test/src/main/java/TestPermittableEndpoints.java
+++ b/component-test/src/main/java/TestPermittableEndpoints.java
@@ -64,7 +64,7 @@
   @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
   @Autowired
   @Qualifier(value = LOGGER_QUALIFIER)
-  Logger logger;
+  private Logger logger;
 
   private final static TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
   private final static CassandraInitializer cassandraInitializer = new CassandraInitializer();
diff --git a/component-test/src/main/java/TestSystemToken.java b/component-test/src/main/java/TestSystemToken.java
index 66d2f5b..84f2467 100644
--- a/component-test/src/main/java/TestSystemToken.java
+++ b/component-test/src/main/java/TestSystemToken.java
@@ -79,13 +79,13 @@
   public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
           = new TenantApplicationSecurityEnvironmentTestRule(testEnvironment);
 
-  @SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "SpringJavaAutowiringInspection", "SpringJavaAutowiredMembersInspection"})
+  @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
   @Autowired
-  protected MetricsFeignClient metricsFeignClient;
+  private MetricsFeignClient metricsFeignClient;
 
-  @SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "SpringJavaAutowiredMembersInspection"})
+  @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
   @Autowired
-  Example example;
+  private Example example;
 
 
   @Test
