4

SpecsFor.Mvc をテストしようとすると、残念なことに、テストを実行しようとすると、この奇妙なビルド エラーが発生します。

自分のプロジェクトと SpecsFor の最新ソースの両方で実行すると、「ビルドに失敗しました」というメッセージが表示されます。IISTestRunnerAction クラスからの ApplicationException。以下はログファイルからのものですが、私の理解を超えています。

Visual Studio 2012 Pro と IIS Express 8.0 の使用

以下はログファイルからのものです。

アセンブリ "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll" から "VSMSDeploy" タスクを使用します。タスク "VSMSDeploy" パッケージ/公開タスク Microsoft.Web.Publishing.Tasks.VSMSDeploy ロード アセンブリ Microsoft.Web.Deployment、Version=9.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35 パッケージ/公開タスク Microsoft.Web.Publishing.Tasks. VSMSDeploy ロード アセンブリ Microsoft.Web.Delegation、Version=7.1.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35 ソースからの Web 展開タスクの開始: manifest(C:\Users\Chris\Desktop\SpecsFor-master\SpecsFor.Mvc.Demo\ obj\Test\Package\SpecsFor.Mvc.Demo.SourceManifest.xml) を宛先: package(C:\Users\Chris\Desktop\SpecsFor-master\SpecsFor.Mvc.Demo\obj\Test\Package\SpecsFor.Mvc. Demo.zip)。C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4007,5): エラー: Web 配置タスクが失敗しました。('Microsoft.Web.Deployment.DeploymentManager' の型初期化子が例外をスローしました。) パッケージに失敗しました。タスク「VSMSDeploy」の実行が完了 -- 失敗。

アップデート

ここにAssemblyStartupがあります

 [SetUpFixture]
public class AssemblyStartup
{
    private SpecsForIntegrationHost _host;

    [SetUp]
    public void SetupTestRun()
    {
        var config = new SpecsForMvcConfig();
        //SpecsFor.Mvc can spin up an instance of IIS Express to host your app 
        //while the specs are executing.  
        config.UseIISExpress()
            //To do that, it needs to know the name of the project to test...
            .With(Project.Named("SpecsForTesting"))
            //And optionally, it can apply Web.config transformations if you want 
            //it to.
            .ApplyWebConfigTransformForConfig("Debug");

        //In order to leverage the strongly-typed helpers in SpecsFor.Mvc,
        //you need to tell it about your routes.  Here we are just calling
        //the infrastructure class from our MVC app that builds the RouteTable.

        config.BuildRoutesUsing(r => SpecsForTesting.RouteConfig.RegisterRoutes(r));

        //SpecsFor.Mvc can use either Internet Explorer or Firefox.  Support
        //for Chrome is planned for a future release.
        config.UseBrowser(BrowserDriver.Chrome);

        //Does your application send E-mails?  Well, SpecsFor.Mvc can intercept
        //those while your specifications are executing, enabling you to write
        //tests against the contents of sent messages.
        config.InterceptEmailMessagesOnPort(13565);

        //The host takes our configuration and performs all the magic.  We
        //need to keep a reference to it so we can shut it down after all
        //the specifications have executed.
        _host = new SpecsForIntegrationHost(config);
        _host.Start();

    }

    //The TearDown method will be called once all the specs have executed.
    //All we need to do is stop the integration host, and it will take
    //care of shutting down the browser, IIS Express, etc. 
    [TearDown]
    public void TearDownTestRun()
    {
        _host.Shutdown();
    }
}
4

4 に答える 4

4

このエラーが発生しましたが、ソリューションに新しいプロジェクトを追加したことがわかりました。新しいプロジェクトには同じ構成が含まれていませんでした。つまり、ソリューションは「テスト」で実行されていましたが、新しいプロジェクトにはデバッグとリリースのデフォルトのものしかありませんでした。

構成マネージャーに移動し、ソリューション内のすべてのプロジェクトが同じ構成になっていることを確認します。

于 2013-04-06T21:54:45.213 に答える
0

エラーは、実際には MSDeploy からのもののようです。これは、SpecsFor.Mvc が MSBuild を介して内部的に使用し、テスト用にサイトを公開します。これは、MSDeploy から直接送信された同じエラーです: Web 配置タスクが失敗しました。('Microsoft.Web.Deployment.DeploymentManager' の型初期化子が例外をスローしました。) . 残念ながら解決策はないようです。

サイトを手動でデプロイできますか? 次のコマンド ラインでうまくいくはずです。

msbuild /p:DeployOnBuild=true;DeployTarget=パッケージ;_PackageTempDir=;AutoParameterizationWebConfigConnectionStrings=false;プラットフォーム=AnyCPU

それが機能するかどうか、または同様のエラーで爆発するかどうかを教えてください。

于 2012-12-15T20:25:05.257 に答える