Xamarin.UITEC 권장 사항
Xamarin.UITEST 소개
이 테스트 프레임워크는 iOS 및 Android 응용 프로그램에서 C#에 설명된 NUnit 테스트 프레임워크를 사용하여 자동 UI 테스트를 수행할 수 있도록 합니다.
Xamarin.iOS 및 Xamarin.안드로이드 프로젝트와 밀접하게 결합하여 Objective-C/Swift 및 자바 로컬 기술된 iOS 및 안드로이드 프로젝트에도 사용할 수 있습니다.
실제로 Xamarin은forms로 만든 프로그램을 사용해 봅시다.
준비물
전제 조건
Visual Studio를 사용합니다.Forms에서 개발할 수 있는 환경이 있습니다.
Xamarin.UITst 프로젝트 제작
새 프로젝트를 만듭니다.UITTest 크로스오버 플랫폼 테스트 항목 선택
'SampleUITEST'라는 이름으로 제작하면 다음 프로젝트를 제작한다.
Windows의 경우 시스템 세부 설정이 환경 변수로 바뀝니다.
변수: ANDROIDHOME
값: C:\Program Files(x86)\Android\android-sdk
Path에서
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
추가가 필요합니다.
테스트 대상 설정
이번에는 안드로이드 시뮬레이터에서 UITEST를 테스트하기 때문에 설정을 바꿔야 한다.
먼저 AppInitializer 가 있습니다.cs를 편집합니다.
using System;
using Xamarin.UITest;
using Xamarin.UITest.Queries;
namespace SampleUITest
{
public class AppInitializer
{
public static IApp StartApp(Platform platform)
{
if (platform == Platform.Android)
{
return ConfigureApp
.Android
.ApkFile("ここにAPKファイルのパス")
.StartApp();
}
return ConfigureApp.iOS.StartApp();
}
}
}
IAPp 인터페이스를 계승하는 안드로이드, iOS 대상은 응용 프로그램에 대한 조작을 제공한다.AppInitializer.cs에서는 선택한 Platform에 따라 안드로이드 또는 iOS 객체를 생성하는 클래스입니다.
상술하다.Release 빌드에서 생성된 APK 파일의 경로는 ApkFile("")에 표시됩니다.
테스트 설명
우선 테스트 대상의 응용 프로그램 측은 다음과 같은 입력란을 준비했다.
<Entry AutomationId="TestEntry"
ClearButtonVisibility="WhileEditing"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand"/>
자동 입력 값을 확인합니다.
Xamarin.UITETst에서는 AutomationId와 같은 고유한 식별자를 설정하여 화면상의 요소를 식별하고 조작할 수 있습니다.
위의 소스는 AutomationId=TestEntry로 설정됩니다.
그럼 시험을 적어서 실행하세요.
Tests.cs에서 다음 테스트 코드를 기술합니다.
[Test]
public void EntryTest()
{
app.EnterText(c => c.Marked("TestEntry"), "UITest");
app.PressEnter();
Assert.AreEqual("UITest", app.Query(c => c.Marked("TestEntry"))
.FirstOrDefault().Text);
}
.EnterText()는 Entry에 지정된 문자열을 입력하는 방법입니다.실제적으로 테스트를 해보고 싶다면, 테스트에 성공하고, 시뮬레이션자는 다음과 같이 Entry 문자를 입력합니다.
또한 AutomationId 외에도 Xamarin 은UITEST에는 다양한 요소 지정 방법이 있습니다.
예를 들어 Class로 지정한 보기를 지정하는 방법을 소개합니다.
방금 소스 코드를 (으)로 수정합니다.
[Test]
public void EntryTest()
{
app.EnterText(c => c.Class("EntryRenderer").Index(0), "UITest");
app.PressEnter();
Assert.AreEqual("UITest", app.Query(c => c.Marked("TestEntry"))
.FirstOrDefault().Text);
}
Class 지정을 통해 취득하면 요소가 하나가 아닌 경우도 있기 때문에 상기'인덱스(0)'처럼 몇 번째 요소를 지정해야 한다.Xamarin.UITEST는 화면상의 요소의 차원 구조를 이해하는 방법이 있다.
방금 소스 코드를 (으)로 수정합니다.
[Test]
public void EntryTest()
{
app.EnterText(c => c.Class("EntryRenderer").Index(0), "UITest");
app.PressEnter();
app.Repl();
Assert.AreEqual("UITest", app.Query(c => c.Marked("TestEntry"))
.FirstOrDefault().Text);
}
이렇게 실행하면 응용 프로그램.Repl()에서 다음과 같이 명령 프롬프트를 엽니다.따라서 tree를 입력하고 Enter 키를 누릅니다.
이렇게 하면 아래의 층 구조를 볼 수 있다.
[]로 묶은 것은 클라스 이름이다.그 외에도 이곳에서 다양한 정보를 볼 수 있어요.
겸사겸사 앱을 들다.Print.Tree()를 통해 계층 구조를 내보낼 수도 있습니다.
어때?
Xamarin.forms로 프로그램을 만들면 가져올 수 있습니다.
그럼 자동 테스트 생활 잘 하세요!
마지막으로 제가 실제로 어려움을 겪었을 때의 사례를 소개해 드릴게요.
Tips
app.EnterText(c => c.Class("SearchView"), "Test");
var date = new DateTime(2020, 10, 30);
app.Query(c => c.Class("DatePicker")
.Invoke("updateDate", date.Year, date.Month, date.Day));
Reference
이 문제에 관하여(Xamarin.UITEC 권장 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/wattanx/articles/268a1c32a409ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)