View in English

  • Apple Developer
    • 시작하기

    시작하기 탐색

    • 개요
    • 알아보기
    • Apple Developer Program

    알림 받기

    • 최신 뉴스
    • Hello Developer
    • 플랫폼

    플랫폼 탐색

    • Apple 플랫폼
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    피처링

    • 디자인
    • 배포
    • 게임
    • 액세서리
    • 웹
    • 홈
    • CarPlay
    • 기술

    기술 탐색

    • 개요
    • Xcode
    • Swift
    • SwiftUI

    피처링

    • 손쉬운 사용
    • 앱 인텐트
    • Apple Intelligence
    • 게임
    • 머신 러닝 및 AI
    • 보안
    • Xcode Cloud
    • 커뮤니티

    커뮤니티 탐색

    • 개요
    • Apple과의 만남 이벤트
    • 커뮤니티 주도 이벤트
    • 개발자 포럼
    • 오픈 소스

    피처링

    • WWDC
    • Swift Student Challenge
    • 개발자 이야기
    • App Store 어워드
    • Apple 디자인 어워드
    • 문서

    문서 탐색

    • 문서 라이브러리
    • 기술 개요
    • 샘플 코드
    • 휴먼 인터페이스 가이드라인
    • 비디오

    릴리즈 노트

    • 피처링 업데이트
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • 다운로드

    다운로드 탐색

    • 모든 다운로드
    • 운영 체제
    • 애플리케이션
    • 디자인 리소스

    피처링

    • Xcode
    • TestFlight
    • 서체
    • SF Symbols
    • Icon Composer
    • 지원

    지원 탐색

    • 개요
    • 도움말
    • 개발자 포럼
    • 피드백 지원
    • 문의하기

    피처링

    • 계정 도움말
    • 앱 심사 지침
    • App Store Connect 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

    • 이벤트
    • 뉴스
    • 포럼
    • 샘플 코드
    • 비디오
 

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 코드
  • AppIntentsTesting으로 앱 인텐트 도입 검증하기

    Siri, 단축어, Spotlight에서 사용하는 것과 동일한 인프라를 통해 앱 인텐트를 검증하기 위한 새로운 프레임워크인 AppIntentsTesting을 만나 보세요. UI 자동화 없이도 인텐트를 실행하고, 결과를 검사하며, 엔티티와 쿼리를 테스트하는 방법을 살펴보세요. 뷰 주석 및 Spotlight 인덱싱과 같은 통합을 확인하여 개발 워크플로 초기에 버그를 발견하는 방법을 알아보세요.

    챕터

    • 0:16 - Introduction
    • 2:01 - Meet CometCal: your first test
    • 2:29 - How AppIntentsTesting works
    • 9:39 - Testing entity queries
    • 13:49 - Combining multiple intents
    • 16:27 - Test-only intents
    • 18:22 - Testing Spotlight indexing
    • 20:56 - Testing view annotations
    • 24:00 - The App Intents testing workflow
    • 25:19 - Next steps

    리소스

    • Testing your App Intents code
    • App Intents Testing
      • HD 비디오
      • SD 비디오
  • 비디오 검색…
    • 6:48 - Your first test: execute an intent

      import AppIntentsTesting
      
      func testCreateCalendar() async throws {
          let definitions = IntentDefinitions(bundleIdentifier: "com.example.apple-samplecode.CometCal")
          let createCalendar = definitions.intents["CreateCalendarIntent"]
          let result = try await createCalendar.makeIntent(
              name: "Occupy Saturn",
              color: "red"
          ).run()
          XCTAssertEqual(try result.value.title, "Occupy Saturn")
      }
    • 12:25 - Test an entity string query

      // Testing Entity string queries
      func testEventStringQuery() async throws {
          let results = try await eventEntityDefinition
              .entities(matching: "Cosmic Ray")
      
          XCTAssertEqual(results.count, 1)
          XCTAssertEqual(try results[0].title, "Cosmic Ray Calibration")
      }
    • 13:00 - Implement the EntityStringQuery under test

      // Updated query implementation
      struct EventEntityQuery: EntityStringQuery {
          func entities(for identifiers: [EventEntity.ID]) async throws -> [EventEntity] {
      
          }
      
          func suggestedEntities() async throws -> [EventEntity] {
      
          }
      
          func entities(matching string: String) async throws -> [EventEntity] {
              try calendarManager.fetchEvents()
                  .filter { $0.title.localizedCaseInsensitiveContains(string) }
                  .map(\.entity)
          }
      }
    • 15:42 - Chain multiple intents in one test

      // Test event creation followed by update
      func testCreateAndUpdateEvent() async throws {
          let createResult = try await createEventDefinition.makeIntent(
              title: "Asteroid Dodgeball Practice",
              startDate: Date(),
              isAllDay: false,
              calendar: "Deep Space"
          ).run()
      
          XCTAssertEqual(try createResult.value.title, "Asteroid Dodgeball Practice")
      
          let updateResult = try await updateEventDefinition.makeIntent(
              title: "Asteroid Dodgeball Rules Overview",
              event: createResult.value
          ).run()
      
          XCTAssertEqual(try updateResult.value.title, "Asteroid Dodgeball Rules Overview")
      }
    • 17:45 - Make an intent test-only

      // Test-only intent: SeedSampleEventsIntent
      #if DEBUG
      struct SeedSampleEventsIntent: AppIntent {
          static let isDiscoverable = false
      
          func perform() async throws -> some IntentResult {
              // Create known list of events
              return .result()
          }
      }
      #endif
    • 20:27 - Test Spotlight indexing

      // Testing Spotlight indexing
      func testNewEventIndexedInSpotlight() async throws {
      
          let before = try await eventEntityDefinition.spotlightQuery("Supernova Viewing Party")
          XCTAssertTrue(before.isEmpty, "Event should not exist in Spotlight yet")
      
          // ... Create "Supernova Viewing Party" Event
      
          let after = try await eventEntityDefinition.spotlightQuery("Supernova Viewing Party")
          XCTAssertEqual(after.count, 1)
          XCTAssertEqual(try after[0].title, "Supernova Viewing Party")
      }
    • 22:33 - Test view annotations

      / Testing view annotations
      func testEventViewAnnotation() async throws {
          try await openEventDefinition.makeIntent(target: "Morning Launch Briefing").run()
      
          // Confirm correct event page
          let app = XCUIApplication()
          let title = app.staticTexts["Morning Launch Briefing"]
          XCTAssertTrue(title.waitForExistence(timeout: 5))
      
          let annotations = try await eventEntityDefinition.viewAnnotations()
      
          XCTAssertEqual(annotations.count, 1, "Expected exactly one view annotation")
          XCTAssertEqual(try annotations[0].entity.title, "Morning Launch Briefing")
      }
    • 0:16 - Introduction
    • AppIntentsTesting, a new framework for testing App Intents, which power Siri, Shortcuts, Spotlight, and Widgets. Outlines the agenda: getting started, framework overview, testing intents and entities, and system integrations.

    • 2:01 - Meet CometCal: your first test
    • Introduces the CometCal sample calendar app and writes a first test for CreateCalendarIntent: create a UI testing bundle, build an IntentDefinitions from the bundle id, call makeIntent with parameters, run() it on-device, and assert on the returned entity via dynamic member lookup.

    • 2:29 - How AppIntentsTesting works
    • An integration testing framework that runs your tests in a standard XCUITest bundle while the app runs in a separate process, executing intents through the full App Intents stack, with no mocks and no app-code imports (just a bundle id), giving stable, CI-friendly tests.

    • 9:39 - Testing entity queries
    • Test-driven development of an EntityStringQuery: call entities(matching:) on the entity definition, watch it fail, implement the entities(matching:) conformance on EventEntityQuery, and rerun to green, verified against Shortcuts on device.

    • 13:49 - Combining multiple intents
    • Chain intents in one test as people compose Shortcuts: run CreateEventIntent (with the runtime resolving a CalendarEntity from a string), then pass the returned EventEntity straight into UpdateEventIntent and assert the updated title.

    • 16:27 - Test-only intents
    • Focused intents that exist only for tests, to seed known state, jump directly to a view, or wrap not-yet-adopted functionality. Make any intent test-only with isDiscoverable: false and an #if DEBUG guard.

    • 18:22 - Testing Spotlight indexing
    • Write a regression test for Spotlight: spotlightQuery() returns nothing before the event exists, create it with CreateEventIntent, then assert exactly one indexed result, catching the real bug where indexing was commented out.

    • 20:56 - Testing view annotations
    • Verify the entity Siri sees on screen: open an event via OpenEventIntent, use XCUI to confirm the page, call viewAnnotations(), and assert the single ViewAnnotation's entity, surfacing a bug where the wrong EntityIdentifier (calendar id) was used.

    • 24:00 - The App Intents testing workflow
    • Where AppIntentsTesting fits: unit-test the fundamental types (actions, data, queries) first, then integration-test deeper system reaches (view annotations, Spotlight, cross-app), and still test manually with Siri and Shortcuts.

    • 25:19 - Next steps
    • Download the CometCal sample project and its full test suite, consult the AppIntentsTesting documentation for the complete API, and explore the talk on building Siri experiences with App Intents.

Developer Footer

  • 비디오
  • WWDC26
  • AppIntentsTesting으로 앱 인텐트 도입 검증하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • Apple Intelligence
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • Mini Apps Partner Program
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    최신 뉴스 읽기.
    Apple Developer 앱 받기.
    Copyright © 2026 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침