簡體   English   中英

為什么在 java_test 規則上運行 bazel 測試時 Bazel 找不到我的測試 class?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM