首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用cakebuild.net构建运行xamarin单元测试/ui测试?

如何用cakebuild.net构建运行xamarin单元测试/ui测试?
EN

Stack Overflow用户
提问于 2018-04-30 15:41:06
回答 1查看 390关注 0票数 1

目前,我有一个Cake脚本,可以在我的解决方案中构建我的单个项目,并对这些项目运行一些xUnit测试。我还没有看到任何文档或例子,比如使用Xamarin单元测试应用程序或UI测试,构建dll并使用Cake运行它们。我想知道这样的事情是否可能发生,如果可能的话,怎么可能?我的蛋糕剧本:

代码语言:javascript
复制
#addin "Cake.Xamarin"
#tool "nuget:?package=xunit.runner.console"
#addin "nuget:?package=HyperLinq"
#addin "nuget:?package=XunitXmlResultParser"

//using XunitXmlResultParser;
// Arguments.
var target = Argument ("target", "Default");
var configuration = Argument ("configuration", "release");

// Define directories.
var solutionFile = GetFiles ("./OSP_POC.sln").First ();

// Android and iOS.
var androidProject = GetFiles ("./OSP_POC/OSP_POC.Android/*.csproj").First ();
var iOSProject = GetFiles ("./OSP_POC/OSP_POC.iOS/*.csproj").First ();

// stylecop settings file
var settingsFile = File ("Settings.stylecop");

// xml results file
var resultFile = File ("StylecopResults.xml");
// html report file
var htmlFile = File ("StylecopResults.html");
// Tests.
var testsProject = GetFiles ("./OSP_UnitTests/OSP_UnitTests.csproj").First ();
// NOTE: (assumes Tests projects end with .Tests).
var testsDllPath = string.Format ("./OSP_UnitTests/bin/{0}/netcoreapp2.0/OSP_UnitTests.dll", configuration);

// Output folders.
var artifactsDirectory = Directory ("./artifacts");

Task ("Clean")
    .Does (() => {
        CleanDirectories (string.Format ("./**/obj/{0}",
            configuration));
        CleanDirectories (string.Format ("./**/bin/{0}",
            configuration));

        Information ("Finished cleaning");
    });

Task ("Restore-Packages")
    .Does (() => {
        NuGetRestore (solutionFile);
    });

/*Task("StyleCop")
  .Does(() =>
{
    StyleCopAnalyse(settings => settings
        .WithSolution(solutionFile)
        .WithSettings(settingsFile)
        .ToResultFile(resultFile)
        .ToHtmlReport(htmlFile)
    );
});*/

Task ("Run-Tests")
    // Allows the build process to continue even if there Tests aren't passing.
    .ContinueOnError ()
    .IsDependentOn ("Prepare-Build")
    .Does (() => {
        Information ("running tests");
        Information ($"{testsProject.FullPath}");
        MSBuild (testsProject.FullPath, settings => settings
            .SetConfiguration (configuration)
            .WithTarget ("Build")
            .SetVerbosity (Verbosity.Minimal));
        DotNetCoreTool (testsProject,
            "xunit",
            "--no-build -noshadow -xml ../artifacts/report.xml -html ../artifacts/report.html -configuration " + configuration);

        /*var setting =  new DotNetCoreTestSettings{
                Configuration = configuration,
                ResultsDirectory = artifactsDirectory,
                NoBuild = true
            };
            DotNetCoreTest(testsProject.FullPath, setting);
     */
        /*XUnit2(testsDllPath, 
            new XUnit2Settings
            {
                HtmlReport = true,
                OutputDirectory = artifactsDirectory
            });*/
    });

Task("Package-Results")
    .IsDependentOn("Run-Tests")
    .Does (() => {
        var resultFile = GetFiles ("./artifacts/report.xml").First ().FullPath;
        var parser = new XunitXmlResultParser.XParser ("IFS FSMx Test Results", resultFile, "./artifacts/test_results.html");
        parser.Parse();
        //var results =  GetFiles("./artifacts/*.html");
        //CopyFiles(results, @"\\mkenas21\metrix$\RnD\Mobile\Osprey\build_results\");
    });

Task ("Prepare-Build")
    .IsDependentOn ("Clean")
    .IsDependentOn ("Restore-Packages")
    .Does (() => { });

Task ("Build-Android")
    .IsDependentOn ("Prepare-Build")
    .Does (() => {
        MSBuild (androidProject, settings =>
            settings.SetConfiguration (configuration)
            .WithProperty ("DebugSymbols", "false")
            .WithProperty ("TreatWarningsAsErrors", "false")
            .WithTarget ("SignAndroidPackage")
            .SetVerbosity (Verbosity.Minimal));
    });

Task ("Build-iOS")
    .IsDependentOn ("Prepare-Build")
    .Does (() => {
        MSBuild (iOSProject, settings =>
            settings.SetConfiguration (configuration)
            .WithProperty ("Platform", "iPhoneSimulator")
            .WithProperty ("OutputPath", $"bin/iPhoneSimulator/{configuration}/")
            .WithProperty ("DebugSymbols", "false")
            .WithProperty ("TreatWarningsAsErrors", "false")
            .SetVerbosity (Verbosity.Minimal));
    });

Task ("Build-Solution")
    .IsDependentOn ("Build-Android")
    .IsDependentOn ("Build-iOS")
    .Does (() => { });

Task ("Default")
    .IsDependentOn ("Build-Solution")
    .IsDependentOn ("Run-Tests")
    .IsDependentOn ("Package-Results");

RunTarget (target);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 21:58:37

我已经能够使用xUnit运行下面的测试。我没有解决的是在目标运行程序(iOS或Android)中运行它。但这确实执行了我的.NET核心单元测试。

代码语言:javascript
复制
DotNetCoreTest(UnitTestProjectPath, new DotNetCoreTestSettings
{ 
    Configuration = "<Build Configuration>" 
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50103846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档