如何修复在本地成功但在Jenkins中失败的NUnit测试?

问题描述 投票:0回答:2

我有一个单元测试,在Visual Studio和命令行中都能在本地成功,但在Jenkins构建时却失败了。拉动请求.

一共有29项测试,但只有一项失败,我找不到原因。

测试的方法是这样的。

RuleFor(url => url).Must(url => Uri.TryCreate(url, UriKind.Absolute, out Uri uriResult))
                .OnFailure((url) => throw new CustomException($"The URL {url} provided is not a valid URL"));

单元测试 Assert.Throws<CustomException>(() => _sut.Validate("/image.png"));

错误: Expected CustomException but found null

我正在运行 .NET核心 3.1的Windows上,而Jenkins中的测试是在 Docker.

似乎问题是它只在Windows上成功。我在Mac上试过,但失败了 :(

docker unit-testing jenkins .net-core nunit
2个回答
0
投票

过去,我也遇到过和你类似的问题,这要归结于测试运行的顺序,为什么会在本地成功。

确保你的测试不以任何方式依赖他人。


0
投票

我认为这不是Jenkins的问题。我认为这是一个测试用例的问题。

代码 _sut.validate 能够正确生成URI。

我假设Jenkins正在内部转换为每个容器(微服务)提供的URL,并正确解析名称。测试中的系统工作正常,并成功创建URL。

请更改您的输入URL,您的应用程序将开始抛出错误。


0
投票

原因是本地工作正常,因为我是在windows.在docker中,容器不是windows容器,所以它把字符串识别为绝对的local PATH,因为Uri也支持路径。

最后我修改了单元测试,并增加了一个额外的检查。

© www.soinside.com 2019 - 2024. All rights reserved.