RunSettings 파일 내에서 TestRunParameters에 액세스하는 방법
https://msdn.microsoft.com/en-us/library/jj635153.aspx 을 통해 읽으며 나는 다음을 만들었습니다..RunSettings
예제와 유사한 몇 가지 매개 변수를 가진 파일:
<TestRunParameters>
<Parameter name="webAppUrl" value="http://localhost" />
<Parameter name="webAppUserName" value="Admin" />
<Parameter name="webAppPassword" value="Password" />
</TestRunParameters>
는 을 할 입니다..RunSettings
CodedCoded를한 URL 및 증명을 하여 각 합니다. URL은 CodedCoded를 실행합니다.지정한 RunSettings 파일의 환경에서 UI 테스트.
명령줄에서 실행할 수 있는 설정 파일을 참조할 때까지 다음과 같은 내용이 표시됩니다.
vstest.console myTestDll.dll /Settings:Local.RunSettings /Logger:trx
vstest.console myTestDll.dll /Settings:QA.RunSettings /Logger:trx
등..
하지만 실제로 어떻게 활용할 것인지에 대한 방법을 찾을 수 없습니다.TestRunParameters
된서nem된 내에서UI 테스트.
은 Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ, Δ Δ ΔTestRunParameters
로그인할 위치와 사용할 자격 증명을 결정합니다.이와 같은 것:
[TestInitialize()]
public void MyTestInitialize()
{
// I'm unsure how to grab the RunSettings.TestRunParameters below
string entryUrl = ""; // TestRunParameters.webAppUrl
string userName = ""; // TestRunParameters.webAppUserName
string password = ""; // TestRunParameters.webAppPassword
LoginToPage(entryUrl, userName, password);
}
public void LoginToPage(string entryUrl, string userName, string password)
{
// Implementation
}
에 참조TestRunParameters
대단히 감사합니다!
편집
/// <summary>
/// Summary description for CodedUITest1
/// </summary>
[CodedUITest]
public class CodedUITest1
{
public static string UserName = string.Empty;
[ClassInitialize]
public static void TestClassInitialize(TestContext context)
{
UserName = context.Properties["webAppUserName"].ToString();
Console.WriteLine(UserName);
}
[TestMethod]
public void CodedUITestMethod1()
{
this.UIMap.RecordedMethod1();
// To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
}
// Rest of the default class - TestContext instantiation, UI map instantiation, etc
}
실행 시 발생하는 예외 사항:
Null 참조 예외
@iamfalconeruk 위와 같이 테스트 클래스를 업데이트했지만 여전히 같은 오류가 발생합니다. 제가 무엇을 잘못하고 있는지 알 수 있습니까?
이 문제와 함께 리샤퍼를 사용하는 사용자의 경우 수정 사항을 발견했습니다(리샤퍼를 비활성화할 필요 없음).
Visual Studio 상위 메뉴로 이동 -> 리샤퍼 -> 옵션
도구 섹션을 찾아 "단위 테스트"를 펼칩니다.
MsTest를 클릭합니다.확인란이 활성화되어 있어야 하지만 아래 테스트 설정 파일 경로는 비어 있을 수 있습니다.그런 경우 찾아보기를 클릭하고 사용할 실행 설정 파일을 선택합니다.
저장, 재구축을 클릭하고 테스트를 실행합니다. 이제 매개 변수가 작동합니다.
이유는 확실하지 않지만 테스트 메뉴에서 테스트 설정 파일을 선택하기만 하면 리샤퍼를 사용할 때 실제로 테스트 설정이 작동하지 않으므로 리샤퍼 옵션에서 이 파일을 직접 가리켜야 합니다.
저도 최근에 기존 환경 변수 사용에서 벗어나고 싶어 이러한 사실을 알게 되었습니다.아래에 제시된 해결책은 우리의 요구에 적합했지만, 더 나은 해결책이 있을지도 모릅니다.
이것들에 접근할 수 있다고 밝혀졌습니다TestContext
ClassInitialize
테스트 고정 장치의 방법입니다..Properties
다음과 같은 매개 변수를 가진 사전을 사용할 수 있습니다. 여기에서 값을 액세스할 수 있습니다.
[ClassInitialize]
public static void TestClassinitialize(TestContext context)
{
var webAppUrl = context.Properties["webAppUrl"].ToString();
//other settings etc..then use your test settings parameters here...
}
참고: 이는 정적이므로 이에 액세스해야 하는 경우 테스트 코드 내에서 액세스할 수 있도록 정적 속성을 설정해야 할 수도 있습니다.
데이터 기반 테스트(Data Driven Test) 방식을 사용하는 것이 대안입니다.다음은 데이터 기반 테스트에 대한 몇 가지 기본 정보로 도움이 될 수도 있습니다. https://msdn.microsoft.com/en-us/library/ms182527.aspx
말씀드린 바와 같이, 위 솔루션은 기본적인 수준에서 우리의 요구를 충족시켰습니다.
업데이트: 테스트 설정이 null을 반환하는 경우 아래 이미지를 참조하십시오.
이 기능은 저에게 적합합니다(VS2017-pro).
namespace TestApp.Test
{
[TestClass]
public class UnitTest1
{
// This enables the runner to set the TestContext. It gets updated for each test.
public TestContext TestContext { get; set; }
[TestMethod]
public void TestMethod1()
{
// Arrange
String expectedName = "TestMethod1";
String expectedUrl = "http://localhost";
// Act
String actualName = TestContext.TestName;
// The properties are read from the .runsettings file
String actualUrl = TestContext.Properties["webAppUrl"].ToString();
// Assert
Assert.AreEqual(expectedName, actualName);
Assert.AreEqual(expectedUrl, actualUrl);
}
[TestMethod]
public void TestMethod2()
{
// Arrange
String expectedName = "TestMethod2";
// Act
String actualName = TestContext.TestName;
// Assert
Assert.AreEqual(expectedName, actualName);
}
}
}
사용할 run settings 파일을 선택해야 합니다. 여기서:테스트 -> 테스트 설정입니다.
리샤퍼를 비활성화하는 대안은 리샤퍼 옵션 대화상자(->도구->단위 테스트->MsTest)에서 MST 테스트 지원을 활성화하고 테스트 설정 파일을 선택하는 것입니다.
저도 이 일을 하려고 했습니다.많은 분들이 알고 계시겠지만 MTM을 통해 테스트를 실행하면 사용된 실행 설정의 이름을 비롯한 몇 가지 추가 속성이 테스트 컨텍스트에 노출됩니다.저는 이 속성을 테스트 데이터의 "Foreign Key"와 같은 종류로 사용하여 환경 URL 등을 하드 코드화하지 않고 지정하거나 박스 테스트와 함께 제공되는 매우 빈약한 "Data Driving" 도구를 사용할 수 있도록 했습니다.
물론 BDT의 일부로 테스트를 실행할 때 런타임 속성을 노출하거나 워크플로우를 릴리스할 수 있는 방법은 @kritner가 여기에 설명한 것 외에는 없습니다.그러나 해당 링크의 설명을 읽어보면 여기서 추론할 수 있는 내용을 확인할 수 있습니다.
- 이 솔루션을 사용하려면 VS 2013 R5 또는 VS 2015를 사용해야 합니다.
- 유닛 테스트에만 적용됩니다!
CI 또는 CD 워크플로우의 일부로 UI 또는 Load 테스트를 실행하려는 당사자는 완전히 망쳤습니다.MTM에서 생성된 특정 테스트 구성(설정 아님)으로 Plan/Suite를 실행할 때에도 testContext에서 추가 속성을 얻을 수 없습니다. @Adam은 실행 대 디버깅 시 이 작업을 수행할 수 있었지만 이 작업은 유닛 테스트에서만 작동했을 수 있습니다.코드화된 상태에서UI NullReferenceException을 받지 않고 속성을 검색할 수 없습니다.다음은 제가 조사하기 위해 사용했던 janky code의 예입니다.
if (testContextInstance.Properties["__Tfs_TestConfigurationName__"] != null) //Exposed when run through MTM
{
TFSTestConfigurationName = testContextInstance.Properties["__Tfs_TestConfigurationName__"].ToString();
}
else TFSTestConfigurationName = "Local"; //Local
var configName = testContextInstance.Properties["configurationName"] ?? "No Config Found";
Trace.WriteLine("Property: " + configName);
그리고 내 .runsettings 파일의 XML:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Parameters used by tests at runtime. These are required as a substitute for TFS/MTM test settings.-->
<!-- File instructions: https://msdn.microsoft.com/en-us/library/jj635153.aspx#example -->
<!-- TFS instructions: https://blogs.msdn.microsoft.com/visualstudioalm/2015/09/04/supplying-run-time-parameters-to-tests/ -->
<TestRunParameters>
<Parameter name="configurationName" value="Local" />
</TestRunParameters>
</RunSettings>
그리고 BDT 워크플로우에서 생성된 .trx에서 발췌:
Property: No Config Found
NullReferenceException 문제의 경우:
저도 최근에 같은 문제에 직면해 있었는데 해결책은 Visual Studio 2013의 최신 업데이트입니다.현재 최신 업데이트는 업데이트 5입니다.어떤 특정 업데이트가 이 문제를 해결하는지 잘 모르겠습니다.Update 5를 적용하여 클래스의 TestRunParameters에 성공적으로 액세스할 수 있었습니다.메서드를 초기화합니다.
업데이트 @ https://support.microsoft.com/en-us/kb/2829760 그래서 저는 두 대의 기계를 가지고 있었는데, 한 대는 모두 정상적으로 작동하고 다른 한 대는 예외를 받았습니다.VS 업데이트만 다를 뿐이라는 것을 조사했고, 이를 적용하여 문제를 해결했습니다.:)
NUnit 3을 사용하면 runsettings 파일에서 속성을 찾을 수 있었습니다.
TestContext.Parameters
그렇다면 이 경우는 다음과 같습니다.
string entryUrl = TestContext.Parameters["webAppUrl"];
string username = TestContext.Parameters["webAppUserName"];
string password = TestContext.Parameters["webAppPassword"];
유닛 테스트를 위해 리샤퍼를 비활성화하여 이 문제를 해결할 수 있었습니다.Coded UI 테스트에서도 같은 말을 할 수 있었으면 좋겠습니다.
응용프로그램 설정을 사용하지 않는 이유는 무엇입니까?
그런 다음 어디서든 읽을 수 있습니다.
var yesICan= Properties.Settings.Default.IToldYou;
여기서 속성을 만들 수 있습니다. 많은 작업을 수행할 수 있습니다.
public string URL_WEBOFFICE
{
get
{
return Properties.Settings.Default.WEBOFFICE_URL.Replace("***", Properties.Settings.Default.SiteName);
}
}
언급URL : https://stackoverflow.com/questions/31707415/how-to-access-testrunparameters-within-runsettings-file
'source' 카테고리의 다른 글
C 전처리기에서 스트렌을? (0) | 2023.09.12 |
---|---|
'app' Android XML 네임스페이스는 무엇입니까? (0) | 2023.09.12 |
CSS 너비의 소수점 자리가 존중됩니까? (0) | 2023.09.12 |
Laravel - @yield가 비어 있는지 확인합니다. (0) | 2023.09.12 |
Oracle SQL: IN 절 내에서 1000개 이상의 항목을 사용하는 방법 (0) | 2023.09.12 |