2021-07-22 学习@JUnit4|@RunWith

关于Junit4

在Junit4中,一个POJO类就是一个测试类,测试方法通过@Test来标识,初始化方法通过@Before来标识,释放资源的方法通过@After来标识。

JUnit4注解解释

  1. @Test : 测试方法,测试程序会运行的方法,后边可以跟参数代表不同的测试,如(expected=XXException.class)
    异常测试,(timeout=xxx)超时测试
  2. @Ignore : 被忽略的测试方法
  3. @Before: 每一个测试方法之前运行
  4. @After : 每一个测试方法之后运行
  5. @BeforeClass: 所有测试开始之前运行
  6. @AfterClass: 所有测试结束之后运行
  7. @Ignore:暂不执行该测试方法

JUnit4使用说明

> 创建一个和src同级别的文件夹叫test(逻辑代码放src里,测试代码放test里是个好习惯)。 接着在IntelliJ
> IDEA里还要把这个test文件夹要设置成测试文件的根目录,右键选中 Mark Directory As - Test Sources
>
>前一个@TEST不会影响下一个@TEST 
>

JUnit4 的两个属性

except

    public int factorial(int n) throws Exception {
        if (n < 0) {
            throw new Exception("负数没有阶乘");
        } else if (n <= 1) {
            return 1;
        } else {
            return n * factorial(n - 1);
        }
    }

    @Test(expected = Exception.class)
    public void testFactorialException() throws Exception {
        new Math().factorial(-1);
        fail("factorial参数为负数没有抛出异常");
    }

(expected = Exception.class)和 fail(“factorial参数为负数没有抛出异常”);之间的配合
这个测试方法会检查是否抛出Exception异常(也可以检测是否抛出其它异常),如果抛出了异常那么测试通过(预期就是传进负数会抛出异常)。没有抛出异常则测试不通过执行fail(“factorial参数为负数没有抛出异常”);

timeout

timeout属性,这个是用来测试性能的,就是测试一个方法能不能在规定时间内完成。

关于@RunWith

关于Assert函数的理解

https://www.runoob.com/w3cnote/c-assert.html
我一直以为 assert 仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错"。

在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert() 的用法像是一种"契约式编程",在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个 if 语句:

使用 assert 的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。

在调试结束后,可以通过在包含 #include 的语句之前插入 #define NDEBUG 来禁用 assert 调用

Spark Session替代SparkConf

在2.0版本之前,使用Spark必须先创建SparkConf和SparkContext

//set up the spark configuration and create contexts
val sparkConf = new SparkConf().setAppName("SparkSessionZipsExample").setMaster("local")
// your handle to SparkContext to access other context like SQLContext
val sc = new SparkContext(sparkConf).set("spark.some.config.option", "some-value")
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

在Spark2.0中只要创建一个SparkSession就够了,SparkConf、SparkContext和SQLContext都已经被封装在SparkSession当中。下面的代码创建了一个SparkSession对象并设置了一些参数。这里使用了生成器模式,只有此“spark”对象不存在时才会创建一个新对象。

// Create a SparkSession. No need to create SparkContext
// You automatically get it as part of the SparkSession
val warehouseLocation = "file:${system:user.dir}/spark-warehouse"
val spark = SparkSession
.builder()
.appName("SparkSessionZipsExample")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值