public void TestInvalidContext() { WindowsAppFriend app2 = null; if (IntPtr.Size == 4) { app2 = new WindowsAppFriend(Process.Start(TargetPath.Path32), "2.0"); } else { app2 = new WindowsAppFriend(Process.Start(TargetPath.Path64), "2.0"); } try { WindowControl targetForm = WindowControl.FromZTop(app2); //実行コンテキストを変更 ExecuteContext context = new ExecuteContext(app2, targetForm.AppVar); app2.ChangeContext(context); //破棄 context.Dispose(); //通信に失敗すること try { app2.Dim(); Assert.IsTrue(false); } catch (FriendlyOperationException e) { string message = "アプリケーションとの通信に失敗しました。" + Environment.NewLine + "対象アプリケーションが通信不能な状態になったか、" + Environment.NewLine + "シリアライズ不可能な型のデータを転送しようとした可能性があります。"; Assert.AreEqual(e.Message, message); } } finally { Process.GetProcessById(app2.ProcessId).CloseMainWindow(); } }