Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Continuous integration 以自动化方式在Jenkins/Hudson中从开发人员到构建服务器运行单元测试_Continuous Integration_Jenkins_Hudson_Automated Tests - Fatal编程技术网

Continuous integration 以自动化方式在Jenkins/Hudson中从开发人员到构建服务器运行单元测试

Continuous integration 以自动化方式在Jenkins/Hudson中从开发人员到构建服务器运行单元测试,continuous-integration,jenkins,hudson,automated-tests,Continuous Integration,Jenkins,Hudson,Automated Tests,我们目前正在运行Jenkins(Hudson)CI服务器来构建和打包我们的.net web项目和数据库项目。一切都很好,但我想开始编写单元测试,然后只有在单元测试通过时才通过构建。我们正在使用内置的msbuild任务来构建web项目。使用以下参数 MsBuild Version .NET 4.0 MsBuild Build File ./WebProjectFolder/WebProject.csproj Command Line Arguments ./ta

我们目前正在运行Jenkins(Hudson)CI服务器来构建和打包我们的.net web项目和数据库项目。一切都很好,但我想开始编写单元测试,然后只有在单元测试通过时才通过构建。我们正在使用内置的msbuild任务来构建web项目。使用以下参数

MsBuild Version           .NET 4.0
MsBuild Build File    ./WebProjectFolder/WebProject.csproj  
Command Line Arguments    ./target:Rebuild /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".\obj\Release\WebProject.zip";PackageAsSingleFile=True
我们需要对代码运行自动化测试,这些测试在我们在机器上构建时自动运行(可能是构建后事件),但在Jenkins为该项目构建时也会运行

如果您这样运行它,它不会生成单元测试项目,因为web项目没有引用测试项目。测试项目将引用web项目,但我非常确定这将破坏我们的自动化构建,因为它们主要用于构建和打包我们的部署。运行这些测试应该是自动化构建和打包过程中的一个步骤

选项。。。
  • 创造两份詹金斯的工作。一个用来运行测试的。。。如果测试通过,将触发另一个生成,该生成将生成并打包web项目。将生成后事件放在测试项目上
  • 生成解决方案而不是项目(确保解决方案包含所需的测试),并将生成后事件放在任何将运行nunit控制台以运行测试的测试项目上。然后使用命令行将每个bin和content目录中所有必需的文件复制到一个包中
  • 只需在jenkins中构建测试项目,而不是在jenkins中构建web项目。测试项目将引用web项目(取决于您正在测试的内容)并构建它 问题。。。
  • 有两份工作,没有一份。要调试的两件事不是一件。一个是查看测试是否通过,另一个是构建和编译web项目。测试可能会通过,但如果您正在测试的内容没有使用它,构建可能会失败
  • 这要求我们确切地知道构建中的内容。现在,msbuild为我们完成了这一切。如果您有多个团队在一个项目上工作,那么每次创建一个额外的文件夹时,您都必须担心命令行语句可能很脆弱
  • 这似乎是我们在这里的主要目的的腐败。测试应该是这个过程中的一个步骤,而不是这个过程中最重要的事情。我也不是100%确定触发构建是否与正常构建相同,它是否与正常构建做了所有相同的事情。以相同的方式移动所有正确的文件将它们全部移动到相同的目录等
  • 最初的问题。 我们希望在构建主项目时运行测试。但是,向针对测试项目运行的web项目添加生成后事件不起作用,因为web项目不引用测试项目,也不会触发此项目的生成。我可以继续。。。但这就足够了


    我们花了大约一个星期的时间试图使这项工作顺利进行,但没有成功。如果您觉得可以得到更好的回复,请随意编辑此内容

    在詹金斯/哈德逊,有很多工作是可以的。有些用于执行编译触发的版本控制更改,有些用于运行由成功构建触发的(单元)测试,有些用于执行由成功的早期测试触发的更多测试(集成),有些用于部署,由成功通过所有测试触发

    看看像join、build pipeline、参数化触发器之类的插件,可以帮助解决这个问题

    这也将允许通过使用多个节点并行发生事情。试图把所有的东西都塞进一份工作是不可取的