[英]Why can't Bazel find my test class when running bazel test on a java_test rule?
我在src/handlers/MyHttpHandlerTest.java
中定義了一個測試 class(抱歉,我知道最好將測試放在tests
目錄中)。
這是我的src/handlers/BUILD
文件:
java_test(
name = "MyHttpHandlerTest",
srcs = [
"MyHttpHandler.java",
"MyHttpHandlerTest.java",
],
deps = [
"//:java_test_deps",
"//src/messages",
],
)
我的測試 class 在src/handlers/MyHttpHandlerTest.java
中定義如下(它目前沒有聲明任何東西——我只是想測試我安裝的 junit 和 Mockito):
package src.handlers;
import com.sun.net.httpserver.HttpExchange;
import src.messages.Message;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.when;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.io.IOException;
@ExtendWith(MockitoExtension.class)
public class MyHttpHandlerTest {
@Mock
Message message;
@Mock
HttpExchange exchange;
@Test
public void testGetMessage() throws IOException {
MyHttpHandler handler = new MyHttpHandler();
when(message.getMessage()).thenReturn("Hello world!");
handler.setMessage(message);
handler.handle(exchange);
}
}
當我運行bazel test //src/handlers:MyHttpHandlerTest
時,它成功編譯了源文件,但隨后返回錯誤:
Class not found: [handlers.MyHttpHandlerTest]
為什么bazel找不到這個class?
Bazel 猜測 Java package 層次結構的根是src
文件夾,因此嘗試加載handlers.MyHttpHandlerTest
。 因此,要么將 package 更改為實際handlers
,要么使用test_class
屬性覆蓋 Bazel 的啟發式方法:
java_test(
name = "MyHttpHandlerTest",
srcs = [
"MyHttpHandler.java",
"MyHttpHandlerTest.java",
],
deps = [
"//:java_test_deps",
"//src/messages",
],
test_class = "src.handlers.MyHttpHandlerTest",
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.