0

私は自分のプロジェクトのUITestケースを書いています。だから、複数のファイルをXCTestCaseにサブクラス化するか、または他のテストクラスにサブクラス化したいと思っています。このようなファイルを作成するたびに、次のエラーが発生します。複数のXCTestCaseクラスを使用したUITesting

duplicate symbol _lastUsedSaveDirectory in: 
/Users/UserName/Library/Developer/Xcode/DerivedData/ProjectName/Build/Intermediates/CodeCoverage/Intermediates/Project.build/Debug/Project_UITests.build/Objects-normal/x86_64/SecondaryFile.o 
/Users/UserName/Library/Developer/Xcode/DerivedData/ProjectName/Build/Intermediates/CodeCoverage/Intermediates/Project.build/Debug/Project_UITests.build/Objects-normal/x86_64/MainFile.o 
ld: 1 duplicate symbol for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

私は次のことを試してみましたが、何も動作:

1. Created "SecondaryFile" by subclassing it from "MainFile" which is a subclass of "XCTestCase". 
2. Created "SecondaryFile" by subclassing it directly from "XCTestCase". 
3. Created both .h and .m file for both the "MainFile" and "SecondaryFile" 

MainFile.m

#import <XCTest/XCTest.h> 

@interface MainFile_UITests : XCTestCase 
@end 

@implementation MainFile_UITests 

- (void)setUp { 
     [super setUp]; 

     // Put setup code here. This method is called before the invocation of each test method in the class. 

     // In UI tests it is usually best to stop immediately when a failure occurs. 
     self.continueAfterFailure = NO; 
     // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 
     [[[XCUIApplication alloc] init] launch]; 
     // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 
} 

- (void)tearDown { 
     // Put teardown code here. This method is called after the invocation of each test method in the class. 
     [super tearDown]; 
} 

- (void)testExample { 
    // Use recording to get started writing UI tests. 
     // Use XCTAssert and related functions to verify your tests produce the correct results.  
} 

@end 

SecondaryFile.m

#import <XCTest/XCTest.h> 

@interface SecondaryFile_UITests : XCTestCase 
@end 

@implementation SecondaryFile_UITests 

- (void)setUp { 
     [super setUp]; 

     // Put setup code here. This method is called before the invocation of each test method in the class. 

     // In UI tests it is usually best to stop immediately when a failure occurs. 
     self.continueAfterFailure = NO; 
     // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 
     [[[XCUIApplication alloc] init] launch]; 
     // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 
} 

- (void)tearDown { 
     // Put teardown code here. This method is called after the invocation of each test method in the class. 
     [super tearDown]; 
} 

@end 

誰かがどのようにモジュール化を教えてもらえ/複数のファイルを作成するUITestiクラス。

+0

エラー – Oletha

+0

からのファイルのうちの少なくとも一つのコードを投稿してください、私は両方のためのサンプルコードを追加しましたファイル。コメントしてください。 –

+0

プロジェクトを消去して派生データを削除しようとしましたか? – Oletha

答えて

0

いくつかのUIテストファイルを使用するには、最初にUITests.mのヘッダーファイルを作成してから、別のテストファイルにUITest.hを継承してください。これにより、あなたのサブクラスにUITests.msetUptearDownのメソッドが得られます。次に、新しいテストメソッドをサブクラスに追加するだけです。一例として、

が、ここでのObjective-Cでサブクラス化UITestsファイルの例です: https://gist.github.com/OffensivelyBad/012043f8dab50b3b024238e985462926

関連する問題