“ ไม่มีโมดูลดังกล่าว” เมื่อใช้ @testable ในการทดสอบ Xcode Unit


168

ฉันเพิ่งปรับปรุงเป็น Xcode 7 beta 5 ฉันพยายามเพิ่มการทดสอบหน่วยในโครงการก่อนหน้านี้ แต่ฉันได้รับข้อความแสดงข้อผิดพลาด "ไม่มีโมดูลดังกล่าว [myModuleName]" ใน@testable import myModuleNameบรรทัด

ป้อนคำอธิบายรูปภาพที่นี่

ฉันเหนื่อย

  • ทำความสะอาดโครงการด้วยOptionClean Build Folder
  • ตรวจสอบว่า "Enable Testability" (debug) ถูกตั้งค่าเป็น Yes ใน Build Options
  • การลบเป้าหมายการทดสอบแล้วเพิ่มชุดการทดสอบหน่วย iOS อีกครั้ง

สิ่งนี้ไม่ได้ผลสำหรับโครงการนี้ (แต่ฉันได้รับการทดสอบเพื่อทำงานในโครงการอื่น) มีคนอื่นที่มีปัญหานี้และแก้ไขมันได้หรือไม่



หากคุณกำลังสร้างจากบรรทัดคำสั่งด้วย xcodebuild ตรวจสอบให้แน่ใจว่าเพิ่มแฟล็ก -workspace สำหรับคำสั่ง build ของคุณ ฉันแก้ไขปัญหานี้ที่ Travis ของฉันสร้างขึ้นมาอย่างนั้น
Victor 'Chris' Cabral

คำตอบ:


210

@testable import "ModuleName"กรุณาตรวจสอบชื่อโมดูลของคุณที่คุณพยายามที่จะนำเข้าด้วย ชื่อโมดูลควรจะเหมือนกันในTarget->Build Settings-> Product Module Name


5
ส่วนใหญ่เป็นเรื่องเกี่ยวกับชื่อโมดูลผลิตภัณฑ์ ตรวจสอบspaceและ_
onmyway133

5
ต้องระมัดระวังเกี่ยวกับและ- _หนึ่งในโครงการของฉันมีลบ-ในชื่อ แต่โมดูลมีขีดล่าง_แทน
เบริลเลียม

4
ฉันใช้""ความคิดและได้รับExpected identifier in import declaration
abbood

1
@ onmyway133 ใกล้สุดแล้ว ในกรณีของฉันฉันมีชื่อโมดูลผลิตภัณฑ์ที่แตกต่างจากชื่อโครงการของฉัน ในการค้นหาชื่อโมดูลของคุณให้ไปที่การBuild Settingsเลือกโครงการของคุณ (ไม่ใช่การทดสอบหรือการทดสอบ UI) จากนั้นค้นหาPRODUCT_MODULE_NAMEสิ่งที่แสดงให้เห็นว่ามีสิ่งใดที่ควรดำเนินการ@testable import
jonmecer

115

คำตอบที่เหมาะกับฉัน

คำตอบคือฉันมีข้อผิดพลาดบางอย่างในโครงการที่ทำให้การสร้างล้มเหลว (มันเป็นเพียงข้อผิดพลาดมาตรฐานของคุณทุกวันในรหัส) หลังจากที่ฉันแก้ไขข้อผิดพลาดและทำความสะอาดและสร้างได้อีกครั้งก็ใช้งานได้

โปรดทราบว่าข้อผิดพลาดเหล่านี้ไม่ปรากฏขึ้นในตอนแรก หากต้องการให้ปรากฏ:

  • แสดงความคิดเห็นไฟล์ทดสอบทั้งหมดของคุณที่ให้ข้อผิดพลาด "ไม่มีโมดูลดังกล่าว"
  • ลองเรียกใช้โครงการของคุณอีกครั้ง

หากมีข้อผิดพลาดอื่น ๆ พวกเขาควรจะปรากฏขึ้นในขณะนี้ แก้ไขและยกเลิกการคอมเม้นต์รหัสไฟล์ทดสอบของคุณ ข้อผิดพลาด "ไม่มีโมดูลดังกล่าว" หายไปสำหรับฉัน


ในกรณีที่วิธีนี้ไม่ช่วยแก้ปัญหาสำหรับคนอื่นคุณสามารถลองทำสิ่งต่อไปนี้:

ทำความสะอาดโฟลเดอร์สร้าง

เปิดเมนูผลิตภัณฑ์กดค้างไว้Optionแล้วคลิก "ล้างโฟลเดอร์สร้าง ... "

ป้อนคำอธิบายรูปภาพที่นี่

ตรวจสอบให้แน่ใจว่าเปิดใช้งานการทดสอบได้ตั้งค่าเป็นใช่

ใน Project Navigator คลิกชื่อโครงการของคุณ เลือกการตั้งค่าการสร้างและเลื่อนลงไปที่ตัวเลือกการสร้าง ตรวจสอบให้แน่ใจว่าเปิดใช้งานความสามารถในการทดสอบได้ใช่ (สำหรับการดีบัก)

ป้อนคำอธิบายรูปภาพที่นี่

ลบและเพิ่มเป้าหมายการทดสอบของคุณอีกครั้ง

หากคุณได้ทำสิ่งอื่น ๆ ฉันเดาว่าคุณอาจไม่จำเป็นต้องทำเช่นนี้ แต่ถ้าคุณทำอย่าลืมบันทึกการทดสอบหน่วยใด ๆ ที่คุณเขียนไว้แล้ว

คลิกชื่อโครงการของคุณใน Project Navigator จากนั้นเลือกเป้าหมายการทดสอบของคุณ คลิกปุ่มลบ (-) ที่ด้านล่างเพื่อลบ

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นคลิกปุ่มบวก (+) และเลือกชุดทดสอบหน่วย iOS เพื่อเพิ่มกลับมาอีกครั้ง อย่างที่คุณเห็นคุณยังสามารถเพิ่มชุดทดสอบ UI ในลักษณะเดียวกันได้

ความคิดอื่น ๆ ไม่กี่

  • ตรวจสอบให้แน่ใจว่าคลาสที่จำเป็นทั้งหมดเป็นสมาชิกของเป้าหมายการทดสอบของคุณ
  • ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มไลบรารีที่จำเป็นทั้งหมดแล้ว
  • ตรวจสอบให้แน่ใจว่าชื่อโมดูลถูกเขียนอย่างถูกต้อง (ดูคำตอบนี้ )

หรือ...

แสดงความคิดเห็นหรือคำตอบด้านล่างหากคุณพบสิ่งอื่นที่ใช้งานได้

ที่เกี่ยวข้อง


2
มีปัญหาเดียวกันทั้งหมดที่นี่ด้วย Xcode 7 เบต้า 5 แต่น่าเสียดายที่ขั้นตอนข้างต้นดูเหมือนจะไม่สามารถแก้ไขได้ - โมดูลยังคงเกี่ยวข้องกับ "ไม่มีโมดูล" ยูทิลิตี้ "ดังกล่าว ข้อแตกต่างจากภาพหน้าจอของคุณคือฉันกำลังพยายามทำงานกับโฟลเดอร์ทดสอบ UI (GlimpulseUITests ในกรณีของฉัน) @testable ไม่ทำงานกับเป้าหมายทดสอบ UI หรือไม่
Zac

5
*** สำคัญ *** ถ้าคุณลบและเพิ่มเป้าหมายการทดสอบของคุณอีกครั้งมันจะสร้างเทมเพลตการทดสอบว่างเปล่าเขียนทับการทดสอบที่มีอยู่ของคุณ อย่าลืมบันทึกแหล่งที่มาของการทดสอบก่อนทำเช่นนี้
pauln

2
สำหรับฉันแม้กระทั่งคลาสส่วนตัวของฉันก็ไม่ได้ถูกแสดงขณะพิมพ์ ... ในที่สุดฉันก็ทำผลิตภัณฑ์> ล้าง XCode ที่รีสตาร์ทแล้ว เมื่อรีสตาร์ทให้เวลาสองสามวินาทีเพื่อทำดัชนีให้เสร็จและจากนั้น voila การอ้างอิงทั้งหมดของฉันปรากฏขึ้นโดยไม่ต้องรวมแต่ละคลาสเป็นสมาชิกของเป้าหมายการทดสอบ
Rajive Jain

1
นอกจากนี้หากคุณยังไม่ได้ลองคลิกที่เฟรมเวิร์กที่หายไปทางด้านซ้ายจากนั้นเลือก "สมาชิกภาพเป้าหมาย" และเลือกภาพนั้นในเป้าหมายทดสอบหน่วยของคุณ
albogdano

3
ไปที่การสร้างการตั้งค่าเป้าหมายหลักของคุณ -> "ชื่อโมดูลผลิตภัณฑ์" และดูว่าตรงกับชื่อโมดูลที่คุณพยายามนำเข้าในการทดสอบของคุณหรือไม่
f0rz

64

ปัญหาสำหรับฉันคือเป้าหมายการปรับใช้ iOS ของการทดสอบไม่ได้ตั้งค่าให้เหมือนกับเป้าหมายหลัก ดังนั้นโปรดตรวจสอบเรื่องนี้

ในเป้าหมายการทดสอบของคุณ:

Build Settings -> iOS Deployment Target -> iOS<same as the target you are testing>

หลังจากทำที่ผมต้องตั้งEnable BitcodeไปNoใน Bundle ทดสอบ
pableiros

2
ฮ่า ๆ มันทำงานได้ แต่วิธีโง่จาก xcode ที่มันไม่ได้โยนข้อผิดพลาดที่แตกต่างกัน
เจ Doe

31

ดังนั้นนี่คือวิธีที่ฉันไปเกี่ยวกับการทำให้โค้ดทำงานหลังจากพยายามแก้ไขปัญหาที่แนะนำทั้งหมดจากคำแนะนำก่อนหน้า

  • ฉันตั้งค่า 'เปิดใช้งาน testability' เป็น 'ใช่' ในการตั้งค่า Build ของโครงการ
  • ฉันยังตั้งค่า 'กำหนดโมดูล' เป็น 'ใช่' ในการตั้งค่าการสร้างของโครงการ
  • สำหรับแฟ้ม .swift ปกติ (s) ภายในโครงการของฉันบอกว่าแอปของฉัน , ผมกำลังจะเขียนกรณีทดสอบผมมีทั้งหลัก " แอปของฉัน " และ " MyAppUnitTests " เป้าหมายการตรวจสอบภายใต้สมาชิกเป้าหมาย
  • ฉันเลือกไฟล์ทดสอบหน่วยของฉันแล้วประกาศ ' @testable Import MyApp ' ที่ด้านบนใต้ ' import XCTest ' และตรวจสอบเฉพาะ "MyAppUnitTests" ภายใต้การเป็นสมาชิกเป้าหมาย

และทุกอย่างทำงานเหมือนมีเสน่ห์ หวังว่านี่จะช่วยได้


8
เปิดใช้งานความสามารถในการทดสอบและกำหนดโมดูลเป็นสิ่งที่หลอกลวง ฉันไม่จำเป็นต้องเปลี่ยนการเป็นสมาชิกเป้าหมายสำหรับไฟล์ * .swift ปกติ
George Yacoub

ฉันทำตามขั้นตอนทั้งหมดข้างต้นแล้ว แต่ยังไม่มีข้อผิดพลาดของโมดูลดังกล่าว โครงการของฉันเป็นแบบผสมที่รวดเร็ว
มิคาเอล

@Mikael คุณเขียนทดสอบเฉพาะไฟล์ Swift ในฐานรหัสผสม Objc / Swift ของคุณหรือไม่ (ฉันถามเพราะครั้งสุดท้ายที่ฉันตรวจสอบฉันคิดว่า '@testable import' ทำงานได้เฉพาะกับการเขียนเคสทดสอบสำหรับไฟล์ Swift เท่านั้นแม้ในส่วนผสม codebase Obj-c / Swift มันอาจมีการเปลี่ยนแปลงในตอนนี้ ถ้าฉันผิดที่นี่)
Vick Swift

6
ฉันพบปัญหาของฉัน เป็นเพราะสถาปัตยกรรมที่ถูกต้องของเป้าหมายการทดสอบของฉันไม่เหมือนกับการกำหนดค่าสถาปัตยกรรมที่ถูกต้องของเป้าหมายหลักของฉัน ตอนนี้มันใช้งานได้ Btw ฉันกำลังทดสอบเฉพาะคลาส Swift ในกรณีของฉันฉันไม่ลอง Obj-c
Mikael

3
คุณไม่ควรเพิ่มไฟล์แอปพลิเคชัน swift ลงในเป้าหมายการทดสอบของคุณซึ่งจะทำให้เนื้อหาของพวกเขาซ้ำกันเมื่อเรียกใช้การทดสอบ
PrzemysławWrzesiński

18

หนึ่ง gotcha เพื่อดูว่าถ้าชื่อโมดูลของคุณมีตัวอักษรเส้นประในนั้น-แล้วคุณจะต้องดูด้วย underbar _แทน ด้วยเหตุผลบางอย่างฉันสงสัยว่านี่อาจเป็นปัญหาและเป็นปัญหาของฉันจริงๆ

เช่น. @testable import Ocean-Swiftกลายเป็น@testable import Ocean_Swift

อีกสิ่งหนึ่งถ้าคุณใช้@testableไวยากรณ์ต้องแน่ใจว่าไม่ได้รวมรหัสการผลิตไว้ในเป้าหมายการทดสอบของคุณ ฉันพบว่าสิ่งนี้จะทำให้เกิดความแปลกประหลาดที่อธิบายไม่ได้


1
อักขระที่ไม่ใช่ตัวอักษรและตัวเลขทั้งหมดอาจต้องถูกแทนที่ด้วยขีดล่าง เป้าหมายของฉันอยู่ในรูปแบบนี้App (Dev)โมดูลที่สามารถทดสอบได้กลายเป็นApp__Dev_
mushcraft

11

นี่เป็นข้อผิดพลาดกับการตั้งค่าการสร้างของเป้าหมายทั้งสอง คุณต้องมั่นใจว่า:

  • ENABLE_TESTABILITY เท่ากับใช่สำหรับทั้งสองเป้าหมาย
  • PRODUCT_MODULE_NAMEค่าของเป้าหมายการทดสอบควรจะแตกต่างจากที่หนึ่งของการประยุกต์ใช้

2
สิ่งนี้ใช้ได้สำหรับฉัน ฉันใช้ชื่อโมดูลผิด ฉันลบพื้นที่ว่างออกแทนที่จะเพิ่ม _ ตรวจสอบชื่อผลิตภัณฑ์ของคุณสองเท่าในการตั้งค่า
อาคาร

9

อีกสิ่งหนึ่งที่ควรตรวจสอบ: หากคุณมีโครงการ Objective-C แต่กำลังเขียนการทดสอบหน่วยใน Swift ตรวจสอบให้แน่ใจว่าเป้าหมายหลักใช้ไฟล์ Swift อย่างน้อยหนึ่งไฟล์!


ข้อมูลเพิ่มเติม:

ฉันทำงานในโครงการ Objective-C แต่ต้องการเขียนการทดสอบหน่วยใน Swift

ฉันเพิ่มไฟล์ Swift ไปยังเป้าหมายหลักเพื่อสร้างไฟล์ ProjectName-Bridging-Header.h ที่จำเป็นเขียนการทดสอบของฉันและทุกอย่างทำงานได้อย่างถูกต้อง

ต่อมาฉันลบไฟล์ Swift เพราะฉันคิดว่าฉันไม่ต้องการมัน (รหัสเป้าหมายหลักทั้งหมดอยู่ใน Objective-C ... ฉันเป็นเพียงการทดสอบการเขียนใน Swift)

ฉันไม่ได้สังเกตเห็นปัญหาใด ๆ จนกระทั่งภายหลังหลังจากฉันทำโฟลเดอร์ "clean / clean build build" และปัญหา "No Module ดังกล่าว" ปรากฏขึ้น หลังจากการเกาหัวฉันเพิ่มไฟล์ Swift เปล่าใหม่และปัญหาก็หายไป

ฉันได้ทำการทดสอบหลายครั้งด้วย / ไม่มีไฟล์ Swift และใช้งานได้กับมันเท่านั้น ... ดังนั้นฉันจะต้องปล่อยไฟล์ว่างไว้ในโครงการแปลง Objective-C เป็น Swift หรือเพิ่มบางอย่าง รหัสใหม่ให้กับโครงการที่เขียนใน Swift


1
!! หลังจาก 3 ชั่วโมงการทำความสะอาดการลบข้อมูล Drieved การทำความสะอาดเริ่มต้นจากศูนย์ 3 ครั้งฉันพบความคิดเห็นของคุณซึ่งแก้ไขปัญหาของฉันได้ !!! ขอบคุณ !!!!
Maryam Fekri

คุณรู้วิธีเข้าถึงคลาส Objective-C ในคลาสทดสอบ Swift หรือไม่เพราะฉันนำเข้าโมดูลโปรเจ็กต์และไม่มีข้อผิดพลาด แต่ก็ยังไม่รู้จักคลาส Objective-C ของฉัน ฉันควรทำอะไรอีกไหม
Maryam Fekri

อีกจุดหนึ่งที่ฉันต้องการเพิ่มถึงแม้ว่าโครงการ ObjC ส่วนใหญ่ของฉันจะมีไฟล์ Swift อย่างน้อยหนึ่งไฟล์ที่ไม่มีการเชื่อมต่อส่วนหัวสำหรับเป้าหมายของฉัน ทำตามคำแนะนำที่ลิงค์ต่อไปนี้ภายใต้หัวข้อ "รหัสการนำเข้าภายในเป้าหมายของแอป" ได้รับการแก้ไขความสามารถในการเข้าถึงคลาส ObjC จากการทดสอบ Swift developer.apple.com/documentation/swift/…
palmi

ฉันพบปัญหานี้ อย่างไรก็ตามฉันสนใจที่จะหาวิธีหลีกเลี่ยงการรวมไฟล์ Swift ถ้าเป็นไปได้ดังนั้นฉันจึงถามคำถามที่นี่: stackoverflow.com/q/62965954/211292
ThomasW

ที่จริงแล้วดูเหมือนว่าหากคุณไม่ได้รวม@testable import Fooสายทดสอบหน่วยของคุณควรทำงานอย่างถูกต้อง
ThomasW

9

สำหรับผู้ที่เลื่อนไปจนถึงคำตอบสุดท้ายและยังไม่มีอะไรทำงานนี่คือสิ่งที่ทำเพื่อฉันหลังจากทำตามคำแนะนำคำตอบอื่น ๆ ทั้งหมด ฉันใช้ Xcode 11:

สิ่งที่ทำให้เกิดปัญหาในกรณีของฉันคือฉันเปลี่ยนชื่อผลิตภัณฑ์ของฉัน

  1. ฉันเปลี่ยนชื่อผลิตภัณฑ์ในการตั้งค่าการสร้างของเป้าหมายหลักของฉันเป็น"ชื่อใหม่"
  2. ฉันต้องเลือกแอปพลิเคชันโฮสต์อีกครั้งสำหรับเป้าหมายการทดสอบของฉัน
  3. ฉันไม่ทราบว่าการเปลี่ยนชื่อผลิตภัณฑ์จะเปลี่ยนชื่อโมดูลผลิตภัณฑ์นั่นคือชื่อที่ใช้สำหรับการนำเข้าโมดูลในไฟล์ทดสอบของฉัน ฉันเปลี่ยนการนำเข้าดังนี้:

    @testable นำเข้า New_Name

  4. มันได้ผล

ฉันหวังว่ามันจะช่วย


7

หลังจากใช้เวลาสองสามวันกับปัญหานี้ในที่สุดฉันก็ทำให้มันทำงานกับโครงการของฉัน ปัญหาอยู่ใน Bridging Header - เส้นทางในเป้าหมายการทดสอบไม่สามารถว่างเปล่าได้หากคุณใช้ Bridging Header ในเป้าหมายหลักของคุณBridging Header ต้องไม่ว่างเปล่า !!!

หวังว่ามันจะช่วยประหยัดเวลาสำหรับใครบางคน


5

ตรวจสอบให้แน่ใจภายใต้การตั้งค่าการสร้างของชุดทดสอบเป้าหมายทดสอบอยู่ในรายการ

ข้างปุ่มเล่นให้เลือกรูปแบบทดสอบจากนั้นแก้ไขรูปแบบ ... ไปที่ส่วนสร้างคลิกบวก + และเลือกเป้าหมายที่คุณต้องการทดสอบ

ในกรณีของฉันเรามีเป้าหมายภายในที่เราพัฒนาด้วย (ความแตกต่างเล็กน้อย) และหลังจากการรวมมันจะถูกลบออกจากการกำหนดค่าการทดสอบ

แก้ไขรูปแบบการทดสอบ


5

นี่เป็นอีกสิ่งที่ต้องตรวจสอบว่าไม่ได้อยู่ในรายการ สำหรับฉันมันมีบางอย่างเกี่ยวข้องกับทีมของฉันอาจเป็นเพราะตัวแทนของทีมของเรายังไม่เห็นด้วยกับข้อตกลงใบอนุญาตล่าสุด! เมื่อฉันเลือกทีมอื่นในการตั้งค่าทั่วไปของเป้าหมายแล้วฉันระบุเป้าหมายการปรับใช้เฉพาะเช่น 12.1 หรือ 11.0 ทันใดนั้นคำเตือน "ไม่มีโมดูลดังกล่าว" ก็หายไป

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


4

ในกรณีของฉันฉันมี 3 ประเด็น อย่างแรกคือฉันต้องระบุเส้นทางการนำเข้าใน:

Target -> Build Settings -> Swift Compiler - Search Paths -> Import Paths

อย่างที่สองคือฉันใช้ Pods และฉันต้องนำเข้าฝักเหล่านี้ไปยังการทดสอบของฉันด้วยเช่นกันโดยใช้:

target 'MyAppTests' do
    inherit! :complete
end

อันที่สามที่ฉันใช้คือส่วนหัวการเชื่อมโยงในเป้าหมายของฉันดังนั้นฉันต้องระบุส่วนหัวการเชื่อมต่อให้เหมือนกันสำหรับการทดสอบ


2

ปัญหาของฉันคือคลาสที่ฉันต้องการทดสอบนั้นควรจะอยู่ในโมดูลแยกต่างหาก (ไคลเอ็นต์ API) แต่จริงๆแล้วคลาสนั้นเป็นสมาชิกของเป้าหมายแอปไม่ใช่เป้าหมายเฟรมเวิร์ก การเปลี่ยนความเป็นสมาชิกเป้าหมายของคลาสทำให้ข้อผิดพลาดในการนำเข้าหายไป!


2

สภาพแวดล้อม: Xcode เวอร์ชั่น 9.0 (9A235)
สถานการณ์จำลอง:การทดสอบเฟรมเวิร์กโอเพนซอร์ซ

ฉันมีปัญหาเดียวกัน: 'ไม่มีโมดูลดังกล่าว'

สารละลาย:

  1. เลือกเป้าหมายการทดสอบ
  2. เลือก Build Phases
  3. เพิ่มกรอบการทดสอบผ่าน Link Binary ...

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือไฟล์ทดสอบ: ป้อนคำอธิบายรูปภาพที่นี่


2

ฉันมีปัญหาเดียวกันนี้ การล้างโฟลเดอร์บิลด์และการรีสตาร์ท Xcode ไม่ทำงาน

สิ่งที่ใช้ได้ผลสำหรับฉันคือการตรวจสอบให้แน่ใจว่าการตั้งค่า "สร้างสถาปัตยกรรมที่ใช้งานเท่านั้น" ของเป้าหมายการทดสอบและแบบแผนของคุณตรงกับการตั้งค่าเป้าหมายและแบบแผนแอปของคุณ


2

ฉันทำตามขั้นตอนข้างต้นซึ่งใช้งานได้ อย่างไรก็ตามโครงการของฉันมีปัญหาเพิ่มเติม ฉันได้รับคำเตือนนี้และฉันไม่สามารถเข้าถึงคลาสจากโครงการหลักของฉันเพื่อทดสอบในเป้าหมายการทดสอบของฉัน

ทดสอบส่วนหนึ่งของโมดูลโดยไม่สนใจการนำเข้า

ฉันพบว่าชื่อโมดูลเป้าหมายทดสอบผลิตภัณฑ์ของคุณ (YourTestTarget -> การตั้งค่า Build -> ค้นหาproduct module) ไม่สามารถเป็นชื่อเดียวกับชื่อโครงการของคุณ

ชื่อโมดูลผลิตภัณฑ์สำหรับเป้าหมายการทดสอบไม่สามารถเป็นชื่อเดียวกับชื่อโครงการของคุณ

เมื่อฉันเปลี่ยนชื่อโมดูลผลิตภัณฑ์สำหรับเป้าหมายการทดสอบของฉันทุกอย่างทำงานได้

ป้อนคำอธิบายรูปภาพที่นี่


1

ฉันลองคำตอบทั้งหมดที่นี่ แต่ธงสีแดงจะไม่หายไป แต่ฉันได้รับการทำงานโดยเพียงแค่ "เรียกใช้" การทดสอบที่ว่างเปล่าโดยไม่คำนึงถึงและจะล้างออก

สิ่งที่ฉันต้องการให้แน่ใจว่าเสร็จแล้ว:

  • แอปพลิเคชันโฮสต์
  • @testable import "Module_name" (ตรวจสอบให้แน่ใจว่าชื่อโมดูลนั้นถูกต้อง)
  • ตรวจสอบให้แน่ใจว่าคุณปรับใช้เป้าหมายสำหรับการทดสอบเหมือนกับโครงการ
  • XCTest ไม่จำเป็นต้องมีการเป็นสมาชิกเป้าหมาย

0

สำหรับฉันทางออกคือการเปลี่ยนชื่อ @testable import myproject_ios เป็น @testable import myproject หลังจากฉันได้อัปเดตชื่อผลิตภัณฑ์ของเป้าหมาย myproject-ios ในการตั้งค่าการสร้าง / บรรจุภัณฑ์ / ชื่อผลิตภัณฑ์ / จาก $ {TARGET_NAME} เป็น myproject


0

สิ่งนี้ได้รับการแก้ไขสำหรับฉันเมื่อฉันเปลี่ยนเป้าหมายการปรับใช้จาก 9.3 เป็น 11.0

ทั่วไป> เป้าหมายการปรับใช้> "11.0"


นี่อาจเป็นเรื่องของการเปลี่ยนเครื่องจำลอง แต่มันก็ใช้ได้กับฉันเช่นกัน
RolandasR

0

ทางออกของฉันอยู่ที่นี่

ก่อนอื่นคลิก OdeAlSwiftUITest.swift จากนั้นตรวจสอบ ProjectName เป้าหมายในการเป็นสมาชิกเป้าหมาย

ป้อนคำอธิบายรูปภาพที่นี่


8
นี่เป็นสิ่งที่ผิด อย่าเพิ่มไฟล์ทดสอบลงในเป้าหมายของคุณ
smileBot

0

หากคุณกำลังใช้ xcodebuild และค้นหาปัญหานี้ให้พิจารณาเพิ่มในแฟล็กเวิร์กสเปซไปที่คำสั่ง build

เปลี่ยนสิ่งนี้

$ xcodebuild -scheme PowToonsTests -destination 'name=iPhone X' test

สำหรับสิ่งนี้

$ xcodebuild -workspace PowToons.xcworkspace -scheme PowToonsTests -destination 'name=iPhone X' test

0

ในการสร้างเป้าหมายการทดสอบการตั้งค่าตรวจสอบการทดสอบโฮสต์โดยใช้ชื่อที่ตั้งไว้ใน PRODUCT_NAME เป็นชื่อที่คุณควรใช้ในคลาสทดสอบ

ฉันไม่แนะนำให้เปลี่ยน PRODUCT_NAME (ชื่อการแข่งขันของเป้าหมายหลัก)


0

ป้อนคำอธิบายรูปภาพที่นี่

คลิก MyAppTests.swift ในเนวิเกเตอร์โครงการและคลิกที่แผงด้านขวาตรวจสอบโมดูลของคุณในการเป็นสมาชิกเป้าหมาย มันทำงานได้ในเหมือง


คุณต้องไม่เพิ่มคลาสทดสอบลงในเป้าหมายแอปพลิเคชันของคุณ
อเล็กซ์มอเตอร์


-1

ตามที่อธิบายไว้ในคำตอบนี้ฉันได้เพิ่มการทดสอบ Swift ลงในโครงการ Obj-C เท่านั้น วิธีแก้ปัญหาคือการเพิ่มคลาสหุ่นจำลองอย่างรวดเร็วหลังจากนั้น Xcode จะแจ้งให้เพิ่มส่วนหัวการเชื่อมโยงจากนั้นจึงลบชั้นเรียน Swift หลังจากนั้นทั้งหมดก็โอเค


-1

ฉันนอกจากสิ่งอื่น ๆ ที่ระบุไว้ฉันต้องเพิ่มไฟล์ที่มีคลาสที่ฉันพยายามทดสอบไปยังแหล่งที่รวบรวมของฉันสำหรับโมดูลทดสอบหน่วยป้อนคำอธิบายรูปภาพที่นี่


-1

ฉันคิดว่าสิ่งนี้อาจเกิดขึ้นเพราะฉันลบการทดสอบตัวอย่าง

ฉันลบชุดทดสอบหน่วยจากนั้นเพิ่มใหม่อีกครั้งตามที่แสดงในภาพด้านล่างและทั้งหมดก็ดีอีกครั้ง

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.