我正在阅读Junit 5 用户指南。它引导我找到JUnit 5 Jupiter Gradle Sample,这是将 Junit 5 与 Gradle 结合使用的最简单示例。在build.gradle文件中,有 2 个依赖项,junit-jupiter并且junit-bom. 而在testtask中,它也调用了useJUnitPlatform()function。
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(platform('org.junit:junit-bom:5.7.1'))
testImplementation('org.junit.jupiter:junit-jupiter')
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这junit-jupiter是聚合工件,它提取以下 3 个工件,
所以我想junit-jupiter在我的项目中运行 JUnit Jupiter 已经足够了(如果我错了,请纠正我)。我想知道这里是什么junit-bom以及JUnitPlatform有什么用?我可以简单地摆脱它们吗?感谢大家:)
在"Think in Java"中,作者说:
你只需将"public"关键字留在课堂上,在这种情况下它具有包访问权限.(该类只能在该包中使用.)
为了证明这一点,我创建了一个公共类和一个非公共类:
package com.ciaoshen.thinkinjava.chapter7;
import java.util.*;
//My public class
public class PublicClass {
//default constructor
public PublicClass(){
System.out.println("Hello, I am PublicClass.");
}
}
//Non public class
//It should be package reachable
class PackageReachableClass {
//default constructor
PackageReachableClass(){
System.out.println("Hi, I am PackageReachableClass.");
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我从同一个包中的另一个类调用它们时:
public class InPackageClass {
/**
* MAIN
* @param args void
*/
public static void main(String[] args){
//pubic class can be reached from anywhere
PublicClass newPublicClass=new PublicClass();
//non-public-class should …Run Code Online (Sandbox Code Playgroud) 我试图在java中测试@Override注释.首先,我overloadedMethod在Overload类中重载,有和没有参数.
public class Overload {
//overloaded method with and without param
public void overloadedMethod(){
System.out.println("overloadedMethod(): No parameter");
}
public void overloadedMethod(String s){
System.out.println("overloadedMethod(): String");
}
}
Run Code Online (Sandbox Code Playgroud)
然后Override是该类的子Overload类.我试图覆盖其中一个overloadedMethod.该@Override注释被添加到确保这种方法是否正确重写.
public class Override extends Overload{
//now I want to override
@Override
public void overloadedMethod(String s){
System.out.println("overloadedMethod(): String is overrided");
}
/**
* MAIN
* @param args void
*/
public static void main(String[] args){
Override myOverride=new Override();
//test
myOverride.overloadedMethod();
myOverride.overloadedMethod("Hello"); …Run Code Online (Sandbox Code Playgroud) 我有这个草图应用程序,它允许用户通过按下和移动鼠标来绘制一些图片。
/* create grids in canvas */
const initCanvas = function() {
const canvas = document.querySelector('.canvas');
/* clear old canvas if any */
canvas.innerHTML = '';
/* create new canvas */
let row = parseInt(document.querySelector('textarea.canvasRow').value);
let column = parseInt(document.querySelector('textarea.canvasColumn').value);
if (!row || !column) return;
canvas.style['grid-template-columns'] = `repeat(${column}, 1fr)`;
canvas.style['grid-template-rows'] = `repeat(${row}, 1fr)`;
for (let i = 0; i < (row * column); i++) {
let cell = document.createElement('div');
cell.classList.add('cell');
cell.draggable = false; // prevent cell from being dragged
cell.addEventListener('mousedown', draw, …Run Code Online (Sandbox Code Playgroud)在gumbo html parser source code中,我看到了一些#include像这样的奇怪用例。它们只是在数组定义块中包含头文件。
const char* kGumboTagNames[] = {
#include "tag_strings.h"
"", // TAG_UNKNOWN
"", // TAG_LAST
};
static const unsigned char kGumboTagSizes[] = {
#include "tag_sizes.h"
0, // TAG_UNKNOWN
0, // TAG_LAST
};
Run Code Online (Sandbox Code Playgroud)
然后在tag_string.h文件中列出所有合法的 html 标签,
"html",
"head",
"title",
"base",
"link",
"meta",
"style",
"script",
"noscript",
...
...
Run Code Online (Sandbox Code Playgroud)
我知道它有效,但仍然想知道这是导入外部数据的传统方式,还是只是一种不寻常的破解?
我看到一个有趣的导航列表示例如下(省略了css),
<nav class="navigation">
<ul>
<li><a href="#">Profile</a></li><!--
--><li><a href="#">Settings</a></li><!--
--><li><a href="#">Notifications</a></li><!--
--><li><a href="#">Logout</a></li>
</ul>
</nav>
Run Code Online (Sandbox Code Playgroud)
乍一看,我以为<!--and -->Between<li>标签可能是错误留下的。作者刚刚忘记清除评论了。
但当我把它们排除在外时,导航栏看起来就不一样了。看来是故意添加的。
由于我不是 HTML 专家,所以有人可以解释一下吗?这是常见的伎俩吗?