public void EvaluateMethods() { var model = new MethodsModel(); var point = model.CreatePoint(); Assert.AreEqual(point.X, model.x); Assert.AreEqual(point.Y, model.y); var createPointMethod = typeof(MethodsModel).GetMethod("CreatePoint"); Assert.IsNotNull(createPointMethod); var refPoint = (System.Drawing.Point)createPointMethod.Invoke(model, null); Assert.AreEqual(refPoint.X, model.x); Assert.AreEqual(refPoint.Y, model.y); try { typeof(MethodsModel).GetMethod("CreatePoint", BindingFlags.Instance | BindingFlags.NonPublic); } catch (AmbiguousMatchException) { } var createPoint2Method = typeof(MethodsModel).GetMethod("CreatePoint", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(int) }, null); var createPoint3Method = typeof(MethodsModel).GetMethod("CreatePoint", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(int), typeof(int) }, null); Assert.IsNotNull(createPoint2Method); Assert.IsNotNull(createPoint3Method); var refPoint2 = (System.Drawing.Point)createPoint2Method.Invoke(model, new object[] { 5 }); Assert.AreEqual(refPoint2.X, 5); Assert.AreEqual(refPoint2.Y, model.y); }