【问题标题】:Teamcity - writing tests that access a separate JSON fileTeamcity - 编写访问单独 JSON 文件的测试
【发布时间】:2017-01-19 06:01:44
【问题描述】:

我让 TeamCity 为 C# 项目运行。单元测试是使用 MSTest 编写的,它们包含一个外部 JSON 文件。加载它们是因为它们很大,我不想在 C# 中转义它们。

我这样导入它们:

[TestInitialize]
public void Setup()
{
  using (StreamReader r = new StreamReader(@".\currency2.json"))
  {
    _json = r.ReadToEnd();
  }
  ...

它们在本地运行良好。我设置了“始终复制”,但是当使用 Teamcity 运行测试时,我收到一条错误消息,提示它无法在临时文件夹中找到它们。它们被复制到构建服务器,但不在此临时文件夹中。

找不到文件'E:\TeamCity\buildAgent\temp\buildTmp\SYSTEM_SERVER 2016-07-18 15_28_19\Out\currency2.json'

我在测试构建步骤中将**\bin\release\*test*.dll 设置为我的测试文件名

任何帮助表示赞赏。

【问题讨论】:

  • 错误信息是关于currency2.json 并且您的代码示例是关于currency1.json 是否正常。也许,currency1.json 设置为复制本地,而不是currency2.json
  • 抱歉,这有点误导。错字。它找不到任何文件。

标签: c# json unit-testing teamcity


【解决方案1】:

我遇到了类似的问题。

我把测试文件的属性改成了这个

  • 构建操作 = 内容
  • 复制到输出目录 = 始终复制

Teamcity 会将文件复制到构建文件夹,但它似乎并未保持您期望的相同结构。

所以我创建了一个文件查找循环。这将降低预期的文件夹,直到找到有问题的文本文件。

 var pathLookups = new string[]
        {
            "2ndFolder\\3rdFolder\\test.json", // folder that normally workes
            "3rdFolder\\test.json",
            "test.json"
        };
        foreach (var pathLookup in pathLookups)
        {
            try
            {
                jsonFileCollection = JsonFileLoader<TestJsonType>.LoadJson(pathLooksup);
                if (jsonFileCollection!= null)
                {
                    break;
                }
            }
            catch (Exception)
            {

                Console.WriteLine("Attempted to load test json from path:" + pathLooksup);
            }
        }

这不是最干净的解决方案,但它可以完成工作。您可以重构它以使其看起来更好一些。

【讨论】:

    【解决方案2】:

    您可以将完整的 pass by 参数传递给您的程序(以及在 TeamCity 中定义的值)。

    类似这样的东西(这只是一个伪代码示例):

    string[] programArgs;
    static void Main(string[] args)
    {
        programArgs = args
    }
    
    [TestInitialize]
    public void Setup()
    {
        using (StreamReader r = new StreamReader(programArgs[1]))
        {
        _json = r.ReadToEnd();
        }
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2011-01-17
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多