TFS 빌드로 작업하는 specflow UI 테스트를 시도하는 중이고 매우 가까이 있습니다.nunit 및 TFS 빌드를 사용하는 specflow 플러그인
나는 브라우저의 수에 동일한 테스트를 실행할 수 있기를 원하고, 그래서 몇 가지 조사 후 나는이 발견 :
http://www.baseclass.ch/blog/Lists/Beitraege/Post.aspx?ID=4&mobile=0
을 그리고 로컬 테스트 실행을위한 꿈처럼 작동합니다. 다음 단계는 TFS 2010 빌드 중에 셀레늄 그리드를 호출하는 것입니다.
nunit 커뮤니티 빌드 작업을 내 빌드 템플리트로 가져간 후에 해결할 수없는 오류가 발생했습니다. 빌드는 다음과 같은 오류를보고합니다
그러나, 이것은 나에게로 깊은 오류를 마스킹 것으로 보인다 단순히 NUNIT는 사용자 지정 어셈블리를로드 할 수 있다고 말한다. 내가 경로를보고 시작이에서Error: The system cannot find the file specified. Stack Trace: at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at TfsBuildExtensions.Activities.CodeQuality.NUnit.RunProcess(String fullPath, String workingDirectory, String arguments) in d:\Projects\CodePlex\teambuild2010contrib\CustomActivities\Legacy\VS2010\Source\Activities\CodeQuality\NUnit\NUnit.cs:line 339 at TfsBuildExtensions.Activities.CodeQuality.NUnit.PublishMSTestResults(String resultTrxFile, String collectionUrl, String buildNumber, String teamProject, String platform, String flavor) in d:\Projects\CodePlex\teambuild2010contrib\CustomActivities\Legacy\VS2010\Source\Activities\CodeQuality\NUnit\NUnit.cs:line 394 at TfsBuildExtensions.Activities.CodeQuality.NUnit.PublishTestResultsToTFS(ActivityContext context, String folder) in d:\Projects\CodePlex\teambuild2010contrib\CustomActivities\Legacy\VS2010\Source\Activities\CodeQuality\NUnit\NUnit.cs:line 387 at TfsBuildExtensions.Activities.CodeQuality.NUnit.InternalExecute() in d:\Projects\CodePlex\teambuild2010contrib\CustomActivities\Legacy\VS2010\Source\Activities\CodeQuality\NUnit\NUnit.cs:line 299 at TfsBuildExtensions.Activities.BaseCodeActivity.Execute(CodeActivityContext context) in d:\Projects\CodePlex\teambuild2010contrib\CustomActivities\Legacy\VS2010\Source\Common\BaseCodeActivity.cs:line 67.
System.Configuration.ConfigurationErrorsException : The type 'OpenQA.Selenium.Remote.RemoteWebDriver, Baseclass.Contrib.SpecFlow.Selenium.NUnit.SpecFlowPlugin' could not be found. It may require assembly qualification, e.g. "MyType, MyAssembly".
at Autofac.Configuration.ConfigurationRegistrar.LoadType(String typeName, Assembly defaultAssembly) at Autofac.Configuration.ConfigurationRegistrar.RegisterConfiguredComponents(ContainerBuilder builder, SectionHandler configurationSection) at Autofac.Configuration.ConfigurationRegistrar.RegisterConfigurationSection(ContainerBuilder builder, SectionHandler configurationSection) at Autofac.Configuration.Core.ConfigurationModule.Load(ContainerBuilder builder) at Autofac.Module.Configure(IComponentRegistry componentRegistry) at Autofac.ContainerBuilder.Build(IComponentRegistry componentRegistry, Boolean excludeDefaultModules) at Autofac.ContainerBuilder.Build(ContainerBuildOptions options) at RegistrationForm.Tests.Acceptance.Features.UserRegistrationFeature.FeatureSetup() in c:\Builds\1\Testing\RegistrationForm - Nightly - Main\Sources\Testing\RegistrationForm\Main\RegistrationForm.Tests.Acceptance\Features\UserRegistration.feature.cs:line 0
: 그래서 나는 NUNIT 로그에 대한 빌드 서버의 바이너리 폴더를 통해보고 있었고, 내 테스트 실행 .xml 파일에 충분한 있는지 나는 다른 오류를 찾을 수 맞춤 어셈블리. 이것은 app.config 파일에서 빌드 동안 변환 된 프로젝트에 대해 지정되었으며 파일이 변환되고 있는지 확인하고 빌드 서버의 바이너리 디렉토리에 있는지 확인했습니다. 파일의 관련 섹션은이 부분입니다. 로컬로 작동
<specFlow>
<stepAssemblies>
<stepAssembly assembly="SpecFlow.Assist.Dynamic" />
<stepAssembly assembly="Baseclass.Contrib.SpecFlow.Selenium.NUnit.Bindings" />
</stepAssemblies>
<unitTestProvider name="SeleniumNUnit" />
<plugins>
<add name="Baseclass.Contrib.SpecFlow.Selenium.NUnit" path="..\packages\Baseclass.Contrib.SpecFlow.Selenium.NUnit.1.2.0\tools" />
</plugins>
. 변환 된 파일에서 경로를 변경해야한다고 생각했습니다. "
<specFlow>
<plugins xdt:Transform="Replace">
<add name="Baseclass.Contrib.SpecFlow.Selenium.NUnit" path="." />
</plugins>
DLL이 같은 디렉토리 (바이너리)에 내가 시도", "."처음에 나는 내가이이 파일을 변환에 있도록 작업 디렉토리가 바이너리 디렉토리이었다 가정 , ". \"-이 중 아무 것도 작동하지 않았습니다. 따라서 조금 더 생각하고 오류를 더 자세히 읽은 후에 빌드 서버의 Sources 폴더를 살펴 봐야한다고 생각했습니다. Dll은 packages 폴더 (nuget 패키지 복원)에 있으므로 경로는 로컬로 사용하는 것과 동일해야합니다. 이것도 작동하지 않았다. 그렇다면 ".feature"파일과 관련된 경로가 오류를 던지는 것은 어떻습니까? 이것은 단순히 여분의 ".. \"- 여전히 운이 필요했습니다.
저는 약간의 손실이 있습니다. 생각할 수있는 모든 경로를 시도했지만, 필자의 specflow 플러그인과 TFS 빌드에 대한 지식은 나를 실망 시켰습니다. 아무도 내게 어떤 포인터를 줄 수 있습니까?
nunit이 있고, 내가 말했듯이, 다른 오류를 표시하는 nunit 테스트 실행 출력 파일을 얻을 수 있습니다. 내가 아는 한 nunit은 specflow를 실행 중이며 플러그인을 찾을 수 없으며 오류가 발생합니다. 그 다음에 nunit은 빌드 로그에 자신을 오도하는 오류가 있음을보고합니다. –