Код: Выделить всё
@Singleton
class TracLogger @Inject constructor(
private val iTracLogInfo: ITracLogInfo,
@ApplicationContext val context: Context){
private lateinit var logFileOutputStream:FileOutputStream
private lateinit var file:File
init {
val logsFolder = File(logFolder)
if (!logsFolder.exists()) logsFolder.mkdir()
try {
file = File(logsFolder.absolutePath + "/" + iTracLogInfo.appName + "log.txt")
logFileOutputStream = FileOutputStream(file,true)
} catch (e: Exception) {
Log.d(TAG,"writeLogToFile failed with error "+e.message)
}
}
override val logFolder: String
get() {
var path = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
return if(path != null) path.absolutePath + "/logs" else "/sdcard/Download/logs"
}
override fun log(msg: String) {
try {
if(logFileOutputStream != null){
logFileOutputStream.write(formatLog(msg).toByteArray())
logFileOutputStream.flush()
}
} catch (e: IOException) {
Log.d(TAG,"Error in writing log i.e.($msg) to file "+e.message)
}
}
}
interface ITracLogInfo {
val appName: String
val atLeastSizeLimitToUpload: Long
}
Код: Выделить всё
@RunWith(JUnit4::class)
class TracLoggerTest {
private lateinit var logger: TracLogger
private var iTracLogInfo: ITracLogInfo = mock()
private val context: Context = mock()
@Before
fun setup() {
Mockito.mockStatic(Log::class.java)
logger = TracLogger(iTracLogInfo, context)
}
@Test
fun testLog() {
val message = "Test message"
logger.log(message)
val logFile = File(logger.logFolder + "/" + iTracLogInfo.appName+"log.txt")
val input = logFile.inputStream()
val output = ByteArrayOutputStream()
val buffer = ByteArray(1024)
var length: Int
while (input.read(buffer).also { length = it } != -1) {
output.write(buffer, 0, length)
}
assertEquals(
"${
DateFormatterUtility.formatDateTimeToString(
Date(),
"MM/dd/yyyy HH:mm:ss.SSS"
)
} : $message \n",
output.toString()
)
}
Как я могу решить проблему?
Подробнее здесь: https://stackoverflow.com/questions/760 ... junit-test