1

私が書いたクラスをテストしようとしています。新しいテスト ターゲットを追加し、そこにテストしようとしているクラスのターゲットをインポートしました。私のコードは次のようになります。

import XCTest
import TargetContainingClass

class Tests: XCTestCase
{
   var myClass = MyClass()

   // tests

}

ただし、次のエラーが表示されます。

'MyClass' is not constructible with '()'

MyClassメソッドが含まれてinit()いないため、何も構築する必要はありません。したがって、私は得ているエラーを理解していません。

ここで何か助けていただければ幸いです。

乾杯

4

2 に答える 2

0

init() {}最初に @GoZoner が提案する実装​​を提供することで問題を解決しました。次にApple Mach-O Linker (id) Error、ビルド段階でテストしたいクラスをコンパイル ソースとして追加する必要がありました。

于 2014-08-12T12:18:12.570 に答える
0

次の実装を提供する必要がありますinit()

class MyClass {
  init () {}
}

スウィフトのドキュメントには次のように記載されています。

“Swift provides a default initializer for any structure or base class that provides 
 default values for all of its properties and does not provide at least one initializer
 itself. The default initializer simply creates a new instance with all of 
 its properties set to their default values.”  
    Apple Inc. “The Swift Programming Language.”

しかし、上記は明らかに正しくありません。実際に:

  1> class MyClass1 {}
  2> MyClass1()
/var/folders/.../expr.DO8uJ4.swift:2:1: error: 'MyClass1' is not constructible with '()'
MyClass1()
^
  2> class MyClass { 
  3.     init () {} 
  4. }    
  5> MyClass()
$R0: __lldb_expr_3.MyClass = {}
于 2014-08-02T22:08:13.273 に答える