質問

でも提案のためのユニットテスト管理アプリケーションの追加のためのオフィスはどうですか?い用途があったか、同じ問題MSTest.

問題はあります。純組み立て込内のオフィスのアプリケーション(私の場合、ワード)が必要で参照するインスタンス。純ます。できないかインスタンスを生成のオブジェクトがるのではなく、そのインスタンスの言います。

今では、ご利用になれます。COMAddIns(名のアドイン").オブジェクトインターフェース参照を取得し、取得したCOMオブジェクトが返されるのRequestComAddInAutomationService.私に行うことができ、かつ、それはそのオブジェクトにおいて代理の方法のためのあらゆる方法を。NETオブジェクトを発信していきたい試験(すべてのセット下の条件-編集なく、公表のバージョン)。

のCOMオブジェクト(VB.NET クラスが実際に参照がインスタンスに追加しただけで帰る途によって素敵p/を呼び出すエラー:

システム。を行います。リモ.RemotingException:このリモプロキシがないのチャネルシンクとは、サーバは登録サーバーのチャンネルを聞き、または本アプリケーションは不適切な顧客チャネルの話になります。です。を行います。リモ.プロキシ.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg,Boolean useDispatchMessage,Int32callType) です。を行います。リモ.プロキシ.RemotingProxy.呼び出し(IMessage reqMsg) です。を行います。リモ.プロキシ.RealProxy.PrivateInvoke(MessageData&msgData,Int32型)

私の主な追加COMの可視域およびエラーの変更

システム。InvalidOperationException:操作は無効でに現在のオブジェクトです。です。RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlagsフラグ、オブジェクト目標をInt32[]aWrapperTypes,MessageData&msgData)

ないが、この仕事と周辺での乱れを多くのテストコードをリアルプロジェクトの代わりに試験のプロジェクトの最初がやりたかっただけで、途ではない。

役に立ちましたか?

解決

このようにのんびりと解決します。

  1. べてについてちょうど私の追加に見ることができる場合もありますをクリックし方法ボタンのポートします。変えていったんすべてのクリック手法のみのシンプルparameterlessます。

  2. その後、作成したファイルを保存し、新規ファイル(一部クラス)と呼ばれEntryPointが多かったので非常に短い友達臨たが、通常は電話parameterised労働者の機能、すべてのクリックの方法だというこのファイルです。そのため、たとえば、ある機能を開の標準文書と、"名前を付けて保存"への当社のDMS.のパラメータの文書を開き、カップルでの十数の標準文書として利用します。

くらいなので

Private Sub btnMemo_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean) Handles btnMemo.Click
    DocMemo()
End Sub

のThisAddinし

Friend Sub DocMemo()
    OpenDocByNumber("Prec", 8862, 1)
End Sub

私の新しいEntryPointsファイルです。

  1. 私は新しAddInUtilitiesファイルを

    公開インタフェースIAddInUtilities

#If DEBUG Then

Sub DocMemo()

#End If

End Interface


Public Class AddInUtilities
    Implements IAddInUtilities
    Private Addin as ThisAddIn

#If DEBUG Then

Public Sub DocMemo() Implements IAddInUtilities.DocMemo
    Addin.DocMemo()
End Sub

#End If

 Friend Sub New(ByRef theAddin as ThisAddIn)
     Addin=theAddin
 End Sub
 End Class
  1. というThisAddInファイルを追加

    民間光熱費としてAddInUtilities

    保護オーバーライド機能RequestComAddInAutomationService()オブジェクトとして 場合は光熱費なし 光熱費=New AddInUtilities(Me) End If 返事 機能を終了

ができる試験のDocMemo機EntryPoints用途から、このように:

<TestFixture()> Public Class Numbering

Private appWord As Word.Application
Private objMacros As Object

<TestFixtureSetUp()> Public Sub LaunchWord()
    appWord = New Word.Application
    appWord.Visible = True

    Dim AddIn As COMAddIn = Nothing
    Dim AddInUtilities As IAddInUtilities
    For Each tempAddin As COMAddIn In appWord.COMAddIns
        If tempAddin.Description = "CobbettsMacrosVsto" Then
            AddIn = tempAddin
        End If
    Next
    AddInUtilities = AddIn.Object
    objMacros = AddInUtilities.TestObject


End Sub

<Test()> Public Sub DocMemo()


    objMacros.DocMemo()
End Sub

<TestFixtureTearDown()> Public Sub TearDown()
    appWord.Quit(False)
End Sub

End Class

唯一のことはできませんしユニットテストの実績をクリックし、がんを呼び出してEntryPoints方々からは、ieのRequestComAddInAutomationService面ではなく、イベントハンドラ.

でも本当にうまくいきます。

他のヒント

検討の嘲笑う枠組み NMock, RhinoMocks, など。を偽る行動の事務所。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top