none
用Windows form 參考AutoTest產生的dll出現錯誤 RRS feed

  • 問題

  • 使用版本:Visual Studio 2010

    1.建立測試專案(AT_Project)

    1)錄製的AT Script:使用WINDOWS+D 鍵顯示桌面

    2)建立方法名稱:showDesktop

    3)將這個專案進行建置後在Debug下產生dll檔. (run起來都沒問題)

    2.new Windows Form project (Frm_load)

    1).將上面所產生的dll加入參考當中

            2)建立一個windows form上面只有一顆button

            4)在Button當中加入以下程式碼:

    CodeUITest1 cd=new CodeUITest1();

    cd.CodeUITestMethod1();

          5)修改目標Framework為  .NET Framework4

          6)執行按下按鈕幾次找不到一些參考的dll,於是我將這些dll找到並複製到debug下

              microsoft.visualstudio.testtools.uitest.playback.dll

    microsoft.visualstudio.testtools.uitest.framework.dll

    microsoft.visualstudio.testtools.uitest.extension.msaa.dll

            到Debug下,並重新建置方案

         7)在執行一次一樣的步驟,結果就出現了NullReferenceException

    =========================================================

    System.NullReferenceException 未處理
      Message=並未將物件參考設定為物件的執行個體。
      Source=Microsoft.VisualStudio.TestTools.UITest.Playback
      StackTrace:
           於 Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.GetPlaybackProperty(PlaybackParameter parameter)
           於 Microsoft.VisualStudio.TestTools.UITest.Playback.ScreenElement.TypeString(String text, ModifierKeys modifierKeys, Boolean isEncoded, Boolean isUnicode)
           於 Microsoft.VisualStudio.TestTools.UITesting.Keyboard.SendKeysImplementation(UITestControl control, String text, ModifierKeys modifierKeys, Boolean isEncoded, Boolean isUnicode)
           於 Microsoft.VisualStudio.TestTools.UITesting.Keyboard.SendKeysImplementationWrapper(UITestControl control, String text, ModifierKeys modifierKeys, Boolean isEncoded, Boolean isUnicode)
           於 Microsoft.VisualStudio.TestTools.UITesting.Keyboard.SendKeys(String text, ModifierKeys modifierKeys)
           於 AT_Project.UIMap.showDesktop() 於 D:\AutoTest\AT_Problem\AT_Project\AT_Project\UIMap.Designer.cs: 行 38
           於 AT_Project.CodedUITest1.CodedUITestMethod1() 於 D:\AutoTest\AT_Problem\AT_Project\AT_Project\CodedUITest1.cs: 行 30
           於 Frm_Load.Form1.button1_Click(Object sender, EventArgs e) 於 D:\AutoTest\AT_Problem\Frm_Load\Frm_Load\Form1.cs: 行 23
           於 System.Windows.Forms.Control.OnClick(EventArgs e)
           於 System.Windows.Forms.Button.OnClick(EventArgs e)
           於 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
           於 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           於 System.Windows.Forms.Control.WndProc(Message& m)
           於 System.Windows.Forms.ButtonBase.WndProc(Message& m)
           於 System.Windows.Forms.Button.WndProc(Message& m)
           於 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           於 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           於 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           於 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           於 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
           於 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           於 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           於 System.Windows.Forms.Application.Run(Form mainForm)
           於 Frm_Load.Program.Main() 於 D:\AutoTest\AT_Problem\Frm_Load\Frm_Load\Program.cs: 行 18
           於 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           於 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           於 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           於 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           於 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
           於 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           於 System.Threading.ThreadHelper.ThreadStart()
      InnerException: 

    =======

    Exception是死在這邊(ModifierKeys.Windows):

     public void showDesk()
            {

                // 按鍵盤快速鍵 'Windows + d'
                Keyboard.SendKeys(this.showDeskParams.SendKeys, ModifierKeys.Windows);
            }


    • 已編輯 PT_Jo 2014年1月24日 上午 05:34
    2014年1月23日 上午 07:50

所有回覆