10/10/2018, 09:27
nhà tuyển dụng gửi cho test case các bác help ?
PHP Code:
<?php
/**
* Interviewer: please create test cases for the following class
* @version 01192009
*/
class CMathSimpleMovingAverage {
private $mDatas; // single array of data points (value over time: x1,x2,x3, etc.)
/**
* Set up the input data
* @param array data
* @return void
*/
public function __construct($pDatas) {
$this->mDatas = $pDatas;
}
/**
* Just a really simple addition, only for the purpose of testing, nothing related to moving avg
* @param float number
* @param float number
* @return float total
*/
public function sum($pOne,$pTwo) {
return $pOne+$pTwo;
}
/**
* Compute the forecasted value
* @param int number of periods to use in the moving average
* @return float
*/
public function predict($pNumPastValues) {
$vSum = 0;
for ($i=1;$i<=$pNumPastValues;$i++) {
$vSum += $this->mDatas***91;count($this->mDatas)-$i***93;;
} // rof
$vFuture = $vSum/$pNumPastValues; // avg the intervals
$this->mDatas***91;***93; = $vFuture; // add this latest value into the values, might need for additional prediction
return $vFuture;
}
/**
* Display the output of a standard prediction
* @param int number of periods to use in the moving average
* @param string type of output
* @throws Exception invalid output type
* @return string
*/
public function displayStandardPrediction($pNumPastValues=4,$pOutputType='raw') {
$vValue = $this->predict($pNumPastValues);
switch ($pOutputType) {
case 'raw': return $vValue;
case 'formatted': return number_format($vValue);
default: throw Exception('Unknown Output Type');
} // esac
}
}
/**
* An example test case, there should be at least 5 more cases to test
*/
class CMathSimpleMovingAverageTest extends UnitTestCase {
function test_sum() {
$vMovingAvg = new CMathSimpleMovingAverage(array(1,2,3));
$this->assertEqual($vMovingAvg->sum(1,1),2); // 1+1 must equal 2
}
/*
...
Write your own test cases here
...
*/
}
?>
PHP Code:
/*
...
Write your own test cases here
...
*/
"
UnitTestCase lớp đó họ lấy ở đâu ra, hay bây giờ mình phải viết
c.ty test kỹ quá, các bác giúp em với nha ?
Bài liên quan
Test case là một thuật ngữ rất không nên dùng trong trường hợp này. Người yêu cầu thực ra muốn kiểm tra sự hiểu biết về viết unit test mà thôi.
Bạn không cần implement UnitTestCase vì đó là thư viện hỗ trợ unit test của nhà tuyển dụng. Nếu không nhầm thì nó là SimpleTest.
Theo như tôi nghĩ thì họ yêu cầu viết đơn giản: không cần quan tâm đến fixture, chẳng teardown. Trên thực tế là test thủ tục.
Hôm nay họ gửi cái unit test là cơ hội cuối cho nhà Em nên phải lên đây tham khảo ý kiến các bác.
Cái class mà họ gửi bạn để test có một đống vấn đề kèm theo. Tại sao không gửi unit test files kèm theo các phê bình về code nhỉ?
Ví dụ: $pNumPastValues mà lớn hơn số phần tử của $mDatas thì sao? Làm sao Unit test chạy được vì thư viện còn chẳng bắt lỗi đó. Hay như nếu $mDatas ko phải là array hay $pNumPastValues là null.