@RunWith(Suite.class)
@Suite.SuiteClasses({AssertTests.class, CalculatorTest.class})
public class SuiteTest {
// the class remains empty, used only as a holder for the above annotations
}
public class AssumptionsTest {
@Test
public void testAssumTrue() {
System.out.println("test");
assumeTrue(3>5);
//该方法中下面所有的代码在上面假设的条件成立后执行
//如果上述假设不成立,则会忽略执行该行下面的代码,并报错
System.out.println("assume is true!");
}
@Test
public void testAssumFalse(){
assumeFalse(3>5);
System.out.println("assume is true!");
}
}
以下语法JUnit5支持:
@Test
public void testAssumTrueMessage() {
assumeTrue(3<5,
//第二个参数为当第一个参数不成立时,输出的自定义错误信息
() -> "Aborting test: not on developer workstation");
System.out.println("assume is true!");
}
@Test
public void testAssumeTrueLambda(){
//这个方法的第一个参数为函数式接口,无参数返回值为boolean
assumeTrue(()->{
System.out.println("in assumeTrue");
boolean flag = false;
return flag;
});
System.out.println("out assumeTrue");
}
@Test
public void testAssumThat() {
assumingThat(3>5,
() -> {
//与上述方法不同的是,仅当前面假设成立时,才会执行这里面的语句
//且只会影响到该lambda表达式中的代码
assertEquals(2, 2);
});
//此处的断言不受上述assumingThat限制,在所有情况下都会执行
System.out.println("no effect");
assertEquals("a string", "a string");
}
@Retention(RetentionPolicy.RUNTIME)
// 声明注解接口所使用的委托处理类
@ParametersSuppliedBy(BetweenSupplier.class)
public @interface Between{
// 声明所有可用参数,效果为 @Between([first = int,] last = int)
int first() default 0; // 声明默认值
int last();
}
(2)定义委托处理类 BetweenSupplier
public class BetweenSupplier extends ParameterSupplier {
@Override
public List getValueSources(ParameterSignature sig) {
// 自定义实参值列表
List list = new ArrayList();
// 获取注解变量
Between between = sig.getAnnotation(Between.class);
// 获取通过注解@Between传入的first值
int first = between.first();
// 获取通过注解@Between传入的last值
int last = between.last();
for (int i = first; i <= last; i++) {
// PotentialAssignment.forValue(String name, Object value)
// name为value的描述标记,没实际作用
// value为实参可选值
list.add(PotentialAssignment.forValue("name", i));
}
return list;
}
}
(3)调用方式
@RunWith(Theories.class)
public class TheoryDefinedTest {
@Theory
public final void test(@Between(last = 0) int i, @Between(first = 3, last= 10) int j) {
// i 取值为 0(first默认=0,last=0),j 取值为 3-10
System.out.println("i="+i+" j="+j);
}
}
public class FixtureTest {
private static int quantity = 0;
public FixtureTest() {
quantity++;
}
@BeforeClass
public static void breforeTestOnlyOnce() throws Exception {
System.out.println("Run before all test only once..."+ quantity);
}
@AfterClass
public static void afterTestOnlyOnce() throws Exception {
System.out.println("Run after all test only once..."+ quantity);
}
@Before
public void beforePerTest() {
System.out.println("Run before per test ..."+ quantity);
}
@After
public void afterPerTest() {
System.out.println("Run after per test ..."+ quantity);
}
//Test Method
@Test
public void testOne() {
System.out.println("testOne Start..."+ quantity);
}
@Test
public void testTwo() {
System.out.println("testTwo Start..."+ quantity);
}
}
运行结果:
Run before all test only once...0
Run before per test ...1
testOne Start...1
Run after per test ...1
Run before per test ...2
testTwo Start...2
Run after per test ...2
Run after all test only once...2
public interface FastTests { /* category marker */ }
public interface SlowTests { /* category marker */ }
public class A {
@Test
public void a() {
fail();
}
@Category(SlowTests.class)
@Test
public void b() {
}
}
@Category({SlowTests.class, FastTests.class})
public class B {
@Test
public void c() {
}
}
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public class SlowTestSuite {
// Will run A.b and B.c, but not A.a
}
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@ExcludeCategory(FastTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public class SlowTestSuite {
// Will run A.b, but not A.a or B.c
}
Task not serializable是Spark开发过程最令人头疼的问题之一,这里记录下出现这个问题的两个实例,一个是自己遇到的,另一个是stackoverflow上看到。等有时间了再仔细探究出现Task not serialiazable的各种原因以及出现问题后如何快速定位问题的所在,至少目前阶段碰到此类问题,没有什么章法
1.
package spark.exampl
mysql 查看当前正在执行的操作,即正在执行的sql语句的方法为:
show processlist 命令
mysql> show global status;可以列出MySQL服务器运行各种状态值,我个人较喜欢的用法是show status like '查询值%';一、慢查询mysql> show variab
1. 只有Map任务的Map Reduce Job
File System Counters
FILE: Number of bytes read=3629530
FILE: Number of bytes written=98312
FILE: Number of read operations=0
FILE: Number of lar
import java.util.LinkedList;
import java.util.List;
import ljn.help.*;
public class BTreeLowestParentOfTwoNodes {
public static void main(String[] args) {
/*
* node data is stored in
本文介绍Java API 中 Date, Calendar, TimeZone和DateFormat的使用,以及不同时区时间相互转化的方法和原理。
问题描述:
向处于不同时区的服务器发请求时需要考虑时区转换的问题。譬如,服务器位于东八区(北京时间,GMT+8:00),而身处东四区的用户想要查询当天的销售记录。则需把东四区的“今天”这个时间范围转换为服务器所在时区的时间范围。
入口脚本
入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。终端用户的请求通过入口脚本实例化应用并将将请求转发到应用。
Web 应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为 index.php,也可以使用 Web 服务器能定位到的其他名称。
控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php),该文