我是在 Kotlin 中开发程序的小组的一员。我最近从开发分支中提取了新代码。问题是我收到了这个奇怪的错误。我是唯一得到它的人;我的队友有相同的代码,对他们来说运行良好。
我试过谷歌搜索错误。我没有找到任何帮助,因为它是一个非常具体的帮助。另外就像我说我的队友没有收到这个错误。因此它可能与代码无关。
我得到的错误是这样的:
Error:Kotlin: [Internal Error] java.lang.IllegalStateException: Backend Internal error: Exception during code generation
Cause: Back-end (JVM) Internal error: Error type encountered: [ERROR : For SuccessOrFailure] (ErrorType).
Cause: Error type encountered: [ERROR : For SuccessOrFailure] (ErrorType).
File being compiled at position: (32,28) in C:/Users/Gebruiker/Desktop/Repo/game/src/main/kotlin/nl/han/asd/a1/network/networkstates/EndRoundState.kt
The root cause was thrown at: KotlinTypeMapper.java:116
File being compiled at position: file://C:/Users/Gebruiker/Desktop/Repo/game/src/main/kotlin/nl/han/asd/a1/network/networkstates/EndRoundState.kt
The root cause was thrown at: ExpressionCodegen.java:322
at org.jetbrains.kotlin.codegen.CompilationErrorHandler.lambda$static$0(CompilationErrorHandler.java:24)
at org.jetbrains.kotlin.codegen.PackageCodegenImpl.generate(PackageCodegenImpl.java:74)
at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generatePackage(CodegenFactory.kt:97)
at org.jetbrains.kotlin.codegen.DefaultCodegenFactory.generateModule(CodegenFactory.kt:68)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.doGenerateFiles(KotlinCodegenFacade.java:47)
at org.jetbrains.kotlin.codegen.KotlinCodegenFacade.compileCorrectFiles(KotlinCodegenFacade.java:39)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.generate(KotlinToJVMBytecodeCompiler.kt:446) …Run Code Online (Sandbox Code Playgroud) 我在 Spring Boot 项目中有以下 WebMvcTest 。我启用了 HTTPS 和 JWT 令牌身份验证。该测试在我使用 HTTPS 和 JWT 之前就有效,但在添加它们之后,它给出了 IllegalArgumentException。
我一生都无法弄清楚异常是从哪里来的。有人能指出我正确的方向吗?
测试类:
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = ActionController.class)
public class ActionControllerTests {
@Autowired
private MockMvc mvc;
@MockBean
private ActionService service;
@MockBean
private UserDetailsService userDetailsService;
@MockBean
private JwtRequestFilter jwtRequestFilter;
@Test
@WithMockUser
public void testGetActions_returns_result_from_service() throws Exception {
int actionId = 1;
Action action = new Action();
action.setId(actionId);
List<Action> actionsList = Arrays.asList(action);
given(service.getActions()).willReturn(actionsList);
mvc.perform(get("/actions").secure(true)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$", hasSize(1)))
.andExpect(jsonPath("$[0].id", Matchers.is(actionId)));
}
}
Run Code Online (Sandbox Code Playgroud)
它抛出这个 IllegalArgumentException:
java.lang.IllegalArgumentException: Attribute name must not …Run Code Online (Sandbox Code Playgroud) 这是这个问题的延续 Spring WebMvcTest how to mock Authentication?
我正在尝试在 Spring-boot 中测试接收Authentication对象作为参数的控制器方法。控制器是一个RestController带@CrossOrigin注释的。该方法如下所示:
@GetMapping("/authentication")
public String testAuthentication(Authentication authentication) {
UserDetailsStub userDetailsStub = (UserDetailsStub) authentication.getPrincipal();
return userDetailsStub.getUsername();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我从参数中从身份验证中获取了主体。
问题是,在我的WebMvcTest测试用例中,我得到一个NullPointerException因为在测试用例中,authentication似乎为空。我的问题是为什么?
我尝试添加一个given调用,该调用将在测试用例的UserDetails带@PostConstruct注释的方法中返回一个自定义对象,但我仍然得到NullPointerException.
我的测试用例如下所示:
@Import(SecurityConfiguration.class)
@RunWith(SpringRunner.class)
@WebMvcTest(PDPController.class)
@AutoConfigureMockMvc(addFilters = false)
public class PDPControllerTests {
@Autowired
private MockMvc mvc;
@MockBean(name = "userDetailsService")
private MyUserDetailsService userDetailsService;
//..
@PostConstruct
public void setup() {
given(userDetailsService.loadUserByUsername(anyString()))
.willReturn(new UserDetailsStub());
}
//..
@Test …Run Code Online (Sandbox Code Playgroud) 这是一个简单的问题。
has(steve, 5).
has(mark, 6).
has(craig, 4).
Run Code Online (Sandbox Code Playgroud)
你如何从 Prolog 中获得最多的人?
我试过了,has(Who, Max)但这没有帮助。有可以在这里使用的运算符吗?
谢谢。