### Question:
ExecBuilder { public final AsynchronousExecResult asyncExec() throws IOException { DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); getExecutor().execute(getCommandLine(), env, resultHandler); return new AsynchronousExecResult(resultHandler, stdOut, stdErr, toString()); } ExecBuilder(final String command);  ExecBuilder(final String command, final boolean handleQuoting); final ExecBuilder args(final String... args); final ExecBuilder timeout(final long timeout); final ExecBuilder stdIn(final InputStream stdIn); final ExecBuilder stdOutAndErr(final OutputStream stdOut, final OutputStream stdErr); final ExecBuilder workingDirectory(final Path workingDirectory); final ExecBuilder environment(final Map<String, String> env); final ExecBuilder exitValues(final int[] exitValues); final SynchronousExecResult exec(); final AsynchronousExecResult asyncExec(); @Override final String toString();  }### Answer:
@Test(expectedExceptions = IOException.class) public final void testAsyncExecNonexistentCommand() throws Exception { AsynchronousExecResult result = new ExecBuilder("/bin/veryfakeprogram").asyncExec(); result.waitFor(); Assert.assertTrue(result.isFinished()); Assert.assertFalse(result.isSuccessful()); result.throwExceptionIfFailed(); }