2016-02-18 14 views
8

EDIT: nó hoạt động nếu tệp nằm trong src/test/scala/tests/chứ không phải trong src/main/scala/mypackage/Tại sao?scalatest: đối tượng scalatest không phải là thành viên của gói org

Tôi đã thử các giải pháp từ các chủ đề có những người có cùng vấn đề nhưng không có vấn đề gì.

Cụ thể, tôi có điều này trong build.sbt:

libraryDependencies ++= Seq(
    ... 
    "org.scalatest" % "scalatest_2.10" % "2.2.1" % "test", 
    ... 

Trong IntelliJ một lớp học với:

import org.scalatest.{BeforeAndAfterAll, Suite} 

với {BeforeAndAfterAll, Suite} màu đỏ vì vậy tôi đoán scalatest được tìm thấy

gói sbt cũng không hoạt động:

đối tượng rộng không phải là thành viên của gói org [lỗi] nhập org.scalatest. {BeforeAndAfterAll, Suite}

tôi có đã cố gắng này:

  • SBT cập nhật sạch
  • khởi động lại + làm mất hiệu lực bộ nhớ cache của IntelliJ
  • remove .idea/và tái nhập khẩu
  • libraryDependencies + = "org.scalatest"% "scalatest_2.10"% "2.0"% "kiểm tra" thay vì ogf thực tế
  • nghi lễ ma thuật trên bàn phím của tôi

Không có gì hoạt động

Bất kỳ ý tưởng nào?

+0

Tại sao bạn muốn sử dụng scalatest trong src/main? – Ben

+0

xóa% "test" khỏi phụ thuộc thư viện scalatest. Miễn là ở đó, bạn sẽ không nhận được mục nhập yêu cầu trong classpath trong giai đoạn biên dịch. – philwalk

+0

Bạn đã sửa lỗi này chưa? Tôi đang gặp một lỗi tương tự. Lời khuyên nào sẽ là hữu ích. – Srinivas

Trả lời

13

Bạn nên có một cái nhìn tại sbt project structure:

src/ 
    main/ 
    resources/ 
     <files to include in main jar here> 
    scala/ 
     <main Scala sources> 
    java/ 
     <main Java sources> 
    test/ 
    resources 
     <files to include in test jar here> 
    scala/ 
     <test Scala sources> 
    java/ 
     <test Java sources> 

kiểm tra scala của bạn nên đi theo src/test/scala/.

Nếu bạn thực sự muốn sử dụng scalatest trong hàm main (và bạn biết những gì bạn đang cố gắng để làm), thử điều này:

"org.scalatest" % "scalatest_2.10" % "2.2.1", 

Trong gốc build.sbt, "test" là cấu hình của bạn và nó có nghĩa là scalatest sẽ chỉ được trên classpath thử nghiệm và nó không phải là cần thiết bởi các nguồn chính. Đây thường là phương pháp hay cho thư viện vì người dùng của bạn thường không cần phụ thuộc kiểm tra để sử dụng thư viện của bạn (ref).

+0

Sau 45 phút nhầm lẫn, cảm ơn ... thực sự –

Các vấn đề liên quan