### Question:
DefaultInvocationContext implements InvocationContext { @Override public Object getBindingValue(BindingParameterInvoker invoker) { Object value = getNullableBindingValue(invoker); if (value == null) { throw new BindingException("Parameter '" + invoker.getBindingParameter() + "' need a non-null value"); } return value; } private  DefaultInvocationContext(); static DefaultInvocationContext create(); @Override void addParameter(String parameterName, Object parameterValue); @Override Object getBindingValue(BindingParameterInvoker invoker); @Override @Nullable Object getNullableBindingValue(BindingParameterInvoker invoker); @Override void setBindingValue(BindingParameterInvoker invoker, Object value); @Override @Nullable String getGlobalTable(); @Override void setGlobalTable(String globalTable); @Override void writeToSqlBuffer(String str); @Override void appendToArgs(Object obj, TypeHandler<?> typeHandler); @Override BoundSql getBoundSql(); @Override List<Object> getParameterValues();  }### Answer:
@Test public void testGetBindingValue() throws Exception { DefaultInvocationContext ctx = DefaultInvocationContext.create(); ctx.addParameter("userId", 9527); BindingParameterInvoker userIdInvoker = FunctionalBindingParameterInvoker.create(User.class, BindingParameter.create("userId", "", null)); assertThat(ctx.getBindingValue(userIdInvoker), equalTo((Object) 9527)); }