public ScanResults run(ScanTarget scanTarget) throws ExecutionException, InterruptedException {
    return runAsync(scanTarget).get();
  }
@Test
  public void run_whenSomeVulnDetectorFailed_returnsPartiallySucceededScanResult()
      throws ExecutionException, InterruptedException {
    Injector injector =
        Guice.createInjector(
            new FakeUtcClockModule(),
            new FakePluginExecutionModule(),
            new FakePortScannerBootstrapModule(),
            new FakeServiceFingerprinterBootstrapModule(),
            new FakeVulnDetectorBootstrapModule(),
            new FakeRemoteVulnDetectorBootstrapModule(),
            new FailedVulnDetectorBootstrapModule(),
            new FailedRemoteVulnDetectorBootstrapModule());
    scanningWorkflow = injector.getInstance(DefaultScanningWorkflow.class);

    ScanResults scanResults = scanningWorkflow.run(buildScanTarget());

    assertThat(scanResults.getScanStatus()).isEqualTo(ScanStatus.PARTIALLY_SUCCEEDED);
    assertThat(scanResults.getStatusMessage())
        .contains(
            "Failed plugins:\n"
                + "/fake/VULN_DETECTION/FailedVulnDetector/v0.1\n"
                + "/fake/REMOTE_VULN_DETECTION/FailedRemoteVulnDetector/v0.1");
    assertThat(scanResults.getScanFindingsList()).hasSize(2);
  }