首页 > 系统相关 >在Windows运行Gitlab Runner对.NET Framework 4.6.1旧项目自动执行单元测试

在Windows运行Gitlab Runner对.NET Framework 4.6.1旧项目自动执行单元测试

时间:2024-05-08 12:26:28浏览次数:23  
标签:4.6 Windows YEE Yee dll Framework CLOUD path DIR

摘要

本文介绍了Gitlab Runner如何在Windows服务器上调用vstest.console.exe,对旧的项目基于.NET Framework 4.6.1的项目,自动执行单元测试。

改造旧版本的.csproj文件

改造成功后,完整的.csproj文件如下:

<Project Sdk="Microsoft.NET.Sdk">
	
    <PropertyGroup>
        <ProjectGuid>{4945CE1E-F319-4270-A57C-E9C2A6206CB4}</ProjectGuid>
        <OutputType>Library</OutputType>
        <RootNamespace>Yee.Utilities.Tests</RootNamespace>
        <AssemblyName>Yee.Utilities.Tests</AssemblyName>
        <TargetFramework>net461</TargetFramework>
        <FileAlignment>512</FileAlignment>
    </PropertyGroup>
	
    <ItemGroup>
        <Reference Include="System" />
    </ItemGroup>
	
    <ItemGroup>
        <ProjectReference Include="..\Yee.Cloud\Yee.Cloud.csproj">
            <Project>{2cc2113e-7b17-49c4-a3bc-10f2aba5d837}</Project>
            <Name>Yee.Cloud</Name>
        </ProjectReference>
    </ItemGroup>
	
    <ItemGroup>
      <PackageReference Include="NUnit" Version="3.12.0" />
      <PackageReference Include="NUnit3TestAdapter" Version="3.12.0" />
    </ItemGroup>
	
</Project>

重点说明如下:

  • TargetFramework

把MSTest换成NUnit

NUnit我们采用3.12.0。
对应的测试适配器也必须采用3.12.0。

  • 如果不引用测试适配器,则无法发现测试;
  • 如果测试适配器的包引用最新版本,则Visual Studio 2022中能发现测试,但是Gitlab Runner调用vstest.console.exe后无法发现测试。
    <ItemGroup>
      <PackageReference Include="NUnit" Version="3.12.0" />
      <PackageReference Include="NUnit3TestAdapter" Version="3.12.0" />
    </ItemGroup>

Gitlab服务器上定义环境变量

img

MSBUILD_PATH、YEE_CLOUD_VERSION_ID和YEE_CLOUD_NUPKG_DIR

上文中已经解释了这个变量。

其实这里用不掉YEE_CLOUD_NUPKG_DIR

.gitlab-ci.yml

Visual Studio 2022解决方案根目录下放置.gitlab-ci.yml文件,然后签入代码到Gitlab服务器。

.gitlab-ci.yml文件完整如下

stages:          # List of stages for jobs, and their order of execution
  - build
  - test

variables:
    YEE_CLOUD_VERSION_ID : 2024.5.$CI_PIPELINE_IID
    YEE_CLOUD_NUPKG_DIR : $NUPKG_OUTPUT_ROOT\\Yee.Cloud\\$YEE_CLOUD_VERSION_ID

测试:
  stage: test
  before_script:
    - .$BUILD_LIBRARY_SCRIPT
    - .$MSTEST_PS_FILE
  script:
    - echo "Compiling the code..."
    # Yee.Cache.UnitTests
    - Build-Project $MSBUILD_PATH $CI_PROJECT_DIR "Yee.Utilities.Tests\\Yee.Utilities.Tests.csproj" $YEE_CLOUD_VERSION_ID
    - echo "starting nUnit testing..."
    - test-dll $VSTEST_CONSOLE_EXE_DIR $CI_PROJECT_DIR "Yee.Utilities.Tests\\bin\\debug\\net461\\Yee.Utilities.Tests.dll" "x:\\loda\\test"

PowerShell

function test-dll {
	param (
		[string]$VSTEST_CONSOLE_EXE_DIR,
		[string]$ci_project_dir,
		[string]$dll_path,
		[string]$result_path
	)
$dll_file = $ci_project_dir + "\\" + $dll_path
if(( $project_path -like "/*") -or ($project_path -like "\\*")){
	$dll_file = $ci_project_dir + $dll_path
}
echo "要测试的库"$dll_file 
echo "MSTest所在的路径"$VSTEST_CONSOLE_EXE_DIR
echo "测试报告输出路径"$result_path
cd $VSTEST_CONSOLE_EXE_DIR
.\vstest.console.exe $dll_file
}

执行效果

img

已知的问题

  • PowerShell中如何让Gitlab Runner知道任务出错了?
  • 测试报告如何输出?输出后如何让用户看到测试结果?

标签:4.6,Windows,YEE,Yee,dll,Framework,CLOUD,path,DIR
From: https://www.cnblogs.com/amisoft/p/18179316/gitlab-runner-use-vstest-console-for-net461-pro

相关文章

  • 在Windows运行Gitlab Runner对.NET Framework 4.6.1旧项目自动执行单元测试
    摘要本文介绍了GitlabRunner如何在Windows服务器上调用vstest.console.exe,对旧的项目基于.NETFramework4.6.1的项目,自动执行单元测试。改造旧版本的.csproj文件改造成功后,完整的.csproj文件如下:<ProjectSdk="Microsoft.NET.Sdk"> <PropertyGroup><ProjectG......
  • 在Windows运行Gitlab Runner自动推送nupkg包到NuGet仓库
    摘要本文描述了运行在Windows上的GitlabRunner,如果调用PowerShell来执行推送nupkg包的命令。.gitlab-ci.yml完整脚本如下:stages:#Listofstagesforjobs,andtheirorderofexecution-build-test-push-nupkgvariables:YEE_CLOUD_VERSION_I......
  • 在Windows运行Gitlab Runner打包基于.NET Framework 4.6.1的项目
    摘要本文详细描述了运行在Windows商的GitlabRunner,如何自动集成.NETFramework的项目。Gitlab中的变量变量1:NUPKG_OUTPUT_ROOT这个目录是在git获取的解决方案根目录之外,因为stages变了以后,当前GitlabRunner工作的当前解决方案根目录下会被清空。我们希望build了以后经过单元......
  • windows下使用命令行查看已存储的wifi密码
    netshwlanshowinterface查看当前已连接wifi信息  netshwlanshowprofiles查看所有已保存的wifi配置文件     netshwlanshowprofilesname="XXXXXX"key="Clear"查看特定配置文件详情,包括wifi密码,密码在“关键内容”行 ......
  • 访问framework中hide方法
    经常大家会做安卓系统开发工作问到一个问题,那就是我如果framework代码中增加了一个方法啥的,但是我又不想公开给第三方应用知道,只想让我系统的应用知道,那该怎么办呢?其实这个时候经常就会用到一个hidden的标签,来代表这个方法是隐藏方法,隐藏方法就是给系统内部用的,意味着第三方app就......
  • Windows下使用ONNXRuntime的GPU进行推理时提示cudnn64_8.dll异常
    一、问题复现将模型放到GPU上推理时时发生的异常。OrtSessionOptionsAppendExecutionProvider_CUDA(session_options,0);...ort_outputs=session_.Run(Ort::RunOptions{nullptr},inputNames.data(),&input_tensor_,1,outNames.data(),outNames.size());二、解......
  • windows 环境下python和R的交互
    Rstudio调用Python模块:0.查看python路径sessionInfo()指定python路径library(reticulate)#R使用python的工具path_to_python<-"D:/python"use_python(path_to_python)reticulate::use_python(path_to_python)anndata是python模块,初次运行报错library(anndata)ad<-r......
  • Windows Server查看W3SVC IIS服务器中对应的网站日志
    WindowsServer查看W3SVCIIS服务器中对应的网站日志https://www.cnblogs.com/xiaoyou2018/p/16592930.htmlWindowsServer如何查看IIS服务器中对应的网站日志https://shiyousan.com/post/636240709447985366存在多个W3SVC文件的原因https://blog.csdn.net/qq_38150880/a......
  • Linux与Windows操作系统的爱恨情仇(初料)
    Linux与Windows操作系统的爱恨情仇(初料)更改时间:四种常见文件系统比较(FAT16、FAT32、NTFS、ExFAT)MMU内存管理单元Linux系统内核的作用Linux系统目录和Windows系统文件夹的区别1.四种常见文件系统比较(FAT16、FAT32、NTFS、ExFAT)FAT16、FAT32、NTFS和ExFAT是四......
  • 小白也能轻松玩转 Windows
    ......